<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DE8ARns6eCp7ImA9WhRVGEQ.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096</id><updated>2012-01-18T06:27:27.510-08:00</updated><category term="Network" /><category term="Python" /><category term="thesis" /><category term="xfig" /><category term="Electronics" /><category term="Internet" /><category term="Multimedia" /><category term="Debian" /><category term="Chuck" /><category term="puredata" /><category term="MIDI" /><category term="Latex" /><category term="Graphic" /><category term="sound synthesis" /><category term="Printer" /><category term="Web" /><category term="Octave" /><title>Everyday Linux</title><subtitle type="html">ประสบการณ์เล็ก ๆ น้อย ๆ ที่ได้เรียนรู้ในระหว่างการใช้งานลินุกซ์ในการทำงานในแต่ละวัน ๆ ส่วนใหญ่มาจากอินเตอร์เนต</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://kt-linux.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>30</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/XhSRG" /><feedburner:info uri="blogspot/xhsrg" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;A0YDRH47eip7ImA9WhRREkk.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-2573460498106082421</id><published>2011-11-25T10:47:00.001-08:00</published><updated>2011-11-25T11:26:15.002-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-25T11:26:15.002-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Latex" /><title>การเขียนบันทึกข้อความ (หนังสือราชการภายใน) โดยใช้ LaTeX ตอนที่ 3</title><content type="html">หลังจากที่สร้างคลาสสำหรับการเขียนบันทึกข้อความไปกว่าปี ก็ได้รับคำถาม/ข้อเสนอแนะ 2 ประการคือ&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;คลาสเดิมต้องใช้กับการเข้ารหัสแบบ TIS-620 เท่านั้น ดูเหมือนว่าโลกกำลังเคลื่อนตัวเข้าสู่ UTF8&lt;/li&gt;
&lt;li&gt;คลาสเดิมทำงานได้กับ latex เท่านั้น ไม่สามารถทำงานกับ pdflatex ได้ เพราะ pdflatex ไม่รองรับแฟ้มภาพในรูปแบบ EPS&lt;/li&gt;
&lt;/ol&gt;
จึงทำการปรับปรุงดังนี้&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;การเข้ารหัส&lt;/b&gt;&lt;br /&gt;
ในคลาสจะมีข้อความภาษาไทยที่เป็น Hardcode อยู่ เช่นคำว่า "บันทึกข้อความ" "เรื่อง" "เรียน" เป็นต้น ดังนั้นหากต้องการใช้ UTF8 ตั้งแต่ในคลาส ก็ต้องเรียกแพคเกจ inputenc ตั้งแต่ในคลาส โดย&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;\RequirePackage[thai]{babel}
\RequirePackage[utf8x]{inputenc}
&lt;/pre&gt;
&lt;br /&gt;
ในส่วนหัวของคลาส และเมื่อเรียกใช้แพคเกจตั้งแต่ในคลาสไปแล้วจึงไม่จำเป็นต้องเรียกแพคเกจ Babel และ inputenc ในแฟ้มเอกสารซ้ำอีก&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;ภาพตราครุฑ&lt;/b&gt;&lt;br /&gt;
ภาพตราครุฑต้นฉบับอยู่ที่ &lt;a href="http://th.wikipedia.org/wiki/%E0%B9%84%E0%B8%9F%E0%B8%A5%E0%B9%8C:Tra-Khrut.gif" target="_blank"&gt;wikipedia&lt;/a&gt; เป็นภาพแบบ GIF ต้องแปลงแฟ้มให้อยู่ในรูปแบบ PNG (สำหรับ pdflatex) และ EPS (สำหรับ latex) เสียก่อน โชคดีที่ Debain/wheezy มีแพคเกจชื่อ sam2p เอาไว้แปลงภาพได้ดังนี้&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;&amp;gt; sam2p Tra-Khrut.gif Tra-Khrut.png
&amp;gt; sam2p Tra-Khrut.gif Tra-Khrut.eps
&lt;/pre&gt;
&lt;br /&gt;
ทีนี้ก็ต้องหาทางบอกคลาสว่าผู้ใช้เรียกใช้คำสั่งอะไรระหว่าง pdflatex กับ latex ซึ่งทำได้โดยเรียกใช้แพคเกจ ifpdf และให้คลาสเลือก&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;\RequirePackage{ifpdf}
\ifpdf
 \includegraphics[width=20mm]{Tra-Khrut.png}
\else
 \includegraphics[width=20mm]{Tra-Khrut.eps}
\fi
&lt;/pre&gt;
&lt;br /&gt;
หากไม่ชอบแฟ้ม PNG อาจแปลงแฟ้มภาพเป็น JPG ก็ได้&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-2573460498106082421?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ADTheJCwT9fsrqxy0nrNyJx2P0w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ADTheJCwT9fsrqxy0nrNyJx2P0w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ADTheJCwT9fsrqxy0nrNyJx2P0w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ADTheJCwT9fsrqxy0nrNyJx2P0w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/T67SEdz2kWw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/2573460498106082421/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=2573460498106082421" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/2573460498106082421?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/2573460498106082421?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/T67SEdz2kWw/latex-3.html" title="การเขียนบันทึกข้อความ (หนังสือราชการภายใน) โดยใช้ LaTeX ตอนที่ 3" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2011/11/latex-3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cGSXo4eyp7ImA9WhRREkk.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-6936086389048418918</id><published>2011-06-26T07:29:00.000-07:00</published><updated>2011-11-25T11:23:48.433-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-25T11:23:48.433-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Latex" /><category scheme="http://www.blogger.com/atom/ns#" term="thesis" /><title>การเขียนวิทยานิพนธ์ ม.ข. ด้วย LaTeX - การสร้างหน้าปกและปกใน</title><content type="html">การสร้างส่วนปกของวิทยานิพนธ์ แบ่งออกเป็น 3 ส่วนคือ&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;ปกหน้า ประกอบด้วยตรามหาวิทยาลัย ชื่อวิทยานิพนธ์&lt;/li&gt;
&lt;li&gt;ปกใน ภาษาไทยและภาษาอังกฤษ มีรายละเอียดเพิ่มเติมเกี่ยวกับวิทยานิพนธ์&lt;/li&gt;
&lt;li&gt;ใบรับรอง ระบุชื่อคณะกรรมการสอบวิทยานิพนธ์ ส่วนให้คณบดีของคณะต้นสังกัด และคณบดีบัณฑิตศึกษาลงนาม&lt;/li&gt;
&lt;/ol&gt;
เพื่อดำเนินการในส่วนนี้ได้สะดวก จะต้องมีส่วนที่ศูนย์ คือการกำหนดค่าตัวแปรที่เกี่ยวข้องกับวิทยานิพนธ์ต่าง ๆ เช่นชื่อวิทยานิพนธ์ ชื่อผู้แต่ง หลักสูตร ฯลฯ จะขออธิบายโดยเริ่มจากส่วนที่ศูนย์ก่อน&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;กำหนดตัวแปรที่สำคัญ&lt;/b&gt;&lt;br /&gt;
&lt;pre class="prettyprint"&gt;% - Thesis Information
\newcommand*{\titleth}[1]{\def\@titleth{#1}}      % Thesis Title in Thau
\newcommand*{\authorth}[1]{\def\@authorth{#1}}    % Author name with title in Thai
\newcommand*{\authortha}[1]{\def\@authortha{#1}}  % Author name without title in Thai
\newcommand*{\authora}[1]{\def\@authora{#1}}      % Author name with title in English
\newcommand*{\yearth}[1]{\def\@yearth{#1}}        % Academic Year in B.E.
\newcommand*{\degreeth}[1]{\def\@degreeth{#1}}    % Degree in Thai
\newcommand*{\advisorth}[1]{\def\@advisorth{#1}}  % Advisor name in Thai

\newcommand*{\yearen}[1]{\def\@yearen{#1}}        % Academic year in A.D.
\newcommand*{\degree}[1]{\def\@degree{#1}}        % Degree in English
\newcommand*{\advisoren}[1]{\def\@advisoren{#1}}  % Advisor name in English

\newcommand*{\committeechair}[1]{\def\@committeechair{#1}}   % Committee chair name
\newcommand*{\firstcommittee}[1]{\def\@firstcommittee{#1}}   % Committee name
\newcommand*{\secondcommittee}[1]{\def\@secondcommittee{#1}} % Committee name
\newcommand*{\deanofgs}[1]{\def\@deanofgs{#1}}               % Dean of Graduate Schoold
\newcommand*{\deanofen}[1]{\def\@deanofen{#1}}               % Dean of Host Faculty (Need to change to more proper name)
&lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;หน้าปก&lt;/b&gt;&lt;br /&gt;
จะต้องวางตราสัญลักษณ์มหาวิทยาลัยขอนแก่นไว้ตรงกลางหน้า ต่ำจากนั้นลงมาก็จะเป็นชื่อวิทยานิพนธ์ภาษาไทย (ตัวหนา) และภาษาอังกฤษ (ตัวหนาและเป็นตัวใหญ่ทั้งหมด) ตามลำดับ จากนั้นเว้นระยะไป 6 ซ.ม. จึงจะเป็นชื่อผู้แต่งไม่มีคำนำหน้า (ตัวหนา) เว้นระยะไปอีก 6.9 ซ.ม. ก็จะเป็นการประกาศวุฒิ มหาวิทยาลัย และปีการศึกษา ซึ่งส่วนของวุฒิและปีการศึกษานั้นจะรับมาจากตัวแปรข้างบน ส่วนชื่อมหาวิทยาลัยขอนแก่นนั้นจะฝังลงไปในคลาสเลย สำหรับตัวเลขระยะที่ระบุในส่วนนี้ได้จากการวัดระยะตัวอย่างวิทยานิพนธ์จริง ฝังระยะคงที่นี้ไว้ในคลาสเลยเช่นเดียวกัน แต่ว่าน่าจะปรับปรุงได้ในอนาคต&lt;br /&gt;
&lt;pre class="prettyprint"&gt;% - Front Cover
\begin{titlepage}
\begin{ċenter}
 \begin{figure}
   \begin{ċenter}
  \IfFileExists{kkuNew.eps}{\includegraphics[scale =0.1]{kkuNew.eps}}{File kkuNew.eps is not found.}
     \end{ċenter}
 \end{figure}
\end{ċenter}
\begin{ċenter}
{\large \textbf{\MakeUppercase{\@titleth}}} \\
{\large \textbf{\MakeUppercase{\@title}}}
\end{ċenter}
\vspace{6cm}
\begin{ċenter}
{\large \textbf{\MakeUppercase{\@authorth}}}
\end{ċenter}
\vspace{6.9cm}
\begin{ċenter}
{\large \textbf{วิทยานิพนธ์ปริญญา\@degreeth \\ มหาวิทยาลัยขอนแก่น} \\
\textbf{พ.ศ. \@yearth}}
\end{ċenter}
\end{titlepage}%
&lt;/pre&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-lMzg_IhKrIE/TgdNgR7UVMI/AAAAAAAAAHo/dPJ-r0VVoXc/s1600/front-cover.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-lMzg_IhKrIE/TgdNgR7UVMI/AAAAAAAAAHo/dPJ-r0VVoXc/s1600/front-cover.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;ปกใน&lt;/b&gt;&lt;br /&gt;
ปกในมีสองส่วนย่อยคือปกในภาษาไทยและปกในภาษาอังกฤษ ซึ่งทั้งสองส่วนจะมีโครงสร้างคล้าย ๆ กันคือ ชื่อวิทยานิพนธ์อยู่กลางหน้าด้านบน (ตัวหนา) เว้นระยะ 9 ซ.ม. จะเป็นชื่อผู้แต่งมีคำนำหน้า (ตัวหนา) และเว้นระยะอีก 9 ซ.ม. ก็จะเป็นการประกาศว่าวิทยานิพนธ์นี้เป็นส่วนหนึ่งของหลักสูตรอะไร สาขาอะไร ในมหาวิทยาลัยขอนแก่น ในส่วนนี้ผมนึกชื่อตัวแปรที่จะใช้บรรจุสาขาวิชาไม่ออก เลยเขียน hard code ลงไปในคลาสเลย ควรได้รับการปรับปรุงเพื่อให้สามารถส่งชื่อสาขาวิชาผ่านตัวแปรได้ ในค่าระยะคงที่ที่ใช้ในคลาสมาจาการวัดจริงจากตัวอย่างวิทยานิพนธ์เช่นเดียวกัน &lt;br /&gt;
&lt;pre class="prettyprint"&gt;% Title page in Thai
\begin{titlepage}
\thispagestyle{empty}
\begin{ċenter}
{\large \textbf{\MakeUppercase{\@titleth}}}
\end{ċenter}
\vspace{9cm}
\begin{ċenter}
{\large \textbf{\@authorth}}
\end{ċenter}
\vspace{9cm}
\begin{ċenter}
\textbf{วิทยานิพนธ์นี้เป็นส่วนหนึ่งของการศึกษาตามหลักสูตรปริญญา\@degreeth}\\
\textbf{สาขาวิชาวิศวกรรมไฟฟ้า}\\
\textbf{บัณฑิตวิทยาลัย มหาวิทยาลัยขอนแก่น}\\
\textbf{พ.ศ. \@yearth}
\end{ċenter}
\end{titlepage}
&lt;/pre&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-nFiNVIcePIQ/TgdQdhDBu4I/AAAAAAAAAHs/SfofMvIuliY/s1600/inner-cover-th.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/-nFiNVIcePIQ/TgdQdhDBu4I/AAAAAAAAAHs/SfofMvIuliY/s640/inner-cover-th.png" width="398" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;% Title page in English
\begin{titlepage}
\thispagestyle{empty}
\begin{ċenter}
{\large \textbf{\MakeUppercase{\@title}}}
\end{ċenter}
\vspace{9cm}
\begin{ċenter}
{\large \textbf{\MakeUppercase{\@author}}}
\end{ċenter}
\vspace{8.7cm}
\begin{ċenter}
\textbf{\MakeUppercase{A thesis submitted in partial fulfillment of the requirements}}\\
\textbf{\MakeUppercase{for the degree of \@degree}}\\
\textbf{\MakeUppercase{in Electrical Engineering}}\\
\textbf{\MakeUppercase{Graduate School Khon Kaen University}}\\
\textbf{\MakeUppercase{\@yearen}}
\end{ċenter}
\end{titlepage}
&lt;/pre&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-Upje5Se-jUo/TgdRbNHPyvI/AAAAAAAAAHw/AwxEGT1DUsc/s1600/inner-cover-en.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://4.bp.blogspot.com/-Upje5Se-jUo/TgdRbNHPyvI/AAAAAAAAAHw/AwxEGT1DUsc/s640/inner-cover-en.png" width="398" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;ใบรับรอง&lt;/b&gt;&lt;br /&gt;
ในหน้านี้จะประกอบด้วยตราสัญลักษณ์มหาวิทยาลัยขอนแก่นตรงกลางหน้าด้านบน ต่ำลงมาจะเป็นคำประกาศใบรับรองวิทยานิพนธ์ ตรงจุดนี้ผมใช้การใส่ข้อมูลตรง ๆ ลงไปในคลาส ไม่ผ่านตัวแปรซึ่งควรแก้ไข ต่ำลงมา 1 ซ.ม. จะเป็นชื่อวิทยานิพนธ์ ต่ำลงมาอีก 1 ซ.ม. จะเป็นชื่อผู้เขียน (มีคำนำหน้า) ต่ำลงมาอีก 1 ซ.ม. จะเป็นรายชื่อกรรมการสอบวิทยานิพนธ์ เว้นระยะลงมา 2 ซ.ม. เป็นชื่ออาจารย์ที่ปรึกษา หลังจากนั้นจะเป็นส่วนที่จะให้คณบดีคณะต้นสังกัด และคณบดีบัณฑิตวิทยาลัยลงนาม&lt;br /&gt;
&lt;pre class="prettyprint"&gt;% Certificate page
\begin{titlepage}
\thispagestyle{empty}
\begin{ċenter}
 %\vspace{2.5cm}
 \begin{figure}
   \begin{ċenter}
  \IfFileExists{kkuNew.eps}{\includegraphics[scale =0.1]{kkuNew.eps}}{File kkuNew.eps is not found.}
     \end{ċenter}
 \end{figure}
\end{ċenter}
\begin{ċenter}
\textbf{ใบรับรองวิทยานิพนธ์}\\
\textbf{มหาวิทยาลัยขอนแก่น}\\
\textbf{หลักสูตร}\\
\textbf{วิศวกรรมศาสตรมหาบัณฑิต}\\
\textbf{สาขาวิชาวิศวกรรมไฟฟ้า}
\end{ċenter}
\vspace{1cm}
\begin{flushleft}
\textbf{ชื่อวิทยานิพนธ์}: \hspace{2em} \@titleth \\
\vspace{1cm}
\textbf{ชื่อผู้ทำวิทยานิพนธ์}: \hspace{2em} \@authorth \\
\vspace{1cm}
\begin{tabular}{@{}lll}
\textbf{คณะกรรมการสอบวิทยานิพนธ์} &amp;amp; \@committeechair  &amp;amp; ประธานกรรมการ \\
                               &amp;amp; \@firstcommittee &amp;amp; กรรมการ \\
                               &amp;amp; \@secondcommittee  &amp;amp; กรรมการ
\end{tabular}
\end{flushleft}
\vspace{2cm}
\textbf{อาจารย์ที่ปรึกษาวิทยานิพนธ์:}\\
\begin{ċenter}
% \makebox with zero width is free from center environment
% this is very handy for signature line.
% Could be useful for official memo (Thailand) too.
\makebox[6cm][l]{\dotfill{}}\makebox[0pt][l]{ อาจารย์ที่ปรึกษา}\\
(\@advisorth)
\end{ċenter}
\vspace{1cm}
\begin{ċenter}
\begin{tabular}{ccc}
\dotfill{}&amp;amp;&amp;amp;\dotfill{}\\
 (\@deanofgs)&amp;amp;&amp;amp;(\@deanofen)\\
คณบดีบัณฑิตวิทยาลัย &amp;amp;&amp;amp; คณบดีคณะวิศวกรรมศาสตร์ \\
\end{tabular}
\end{ċenter}
\vspace{1cm}
\begin{ċenter}
ลิขสิทธิ์ของมหาวิทยาลัยขอนแก่น
\end{ċenter}
\end{titlepage}
&lt;/pre&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-0x7NXHXBLJg/TgdTch7PTFI/AAAAAAAAAH0/IMbKazkC-Ys/s1600/certificate_page.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://4.bp.blogspot.com/-0x7NXHXBLJg/TgdTch7PTFI/AAAAAAAAAH0/IMbKazkC-Ys/s640/certificate_page.png" width="398" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
นำคำสั่งทุกคำสั่งที่ตั้งแต่ส่วนที่ใช้สร้างปกจนถึงส่วนใบรับรองบรรจุไว้ในส่วนสร้างคำสั่ง&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; \maketitle&lt;/span&gt;&lt;br /&gt;
&lt;pre class="prettyprint"&gt;\renewcommand\maketitle{
% Commands that create covers and certificate page described earlier
}
&lt;/pre&gt;
หมายความว่าคำสั่งทั้งหมดที่ใช้สร้างปกที่อธิบายไว้ข้างต้น จะต้องอยู่ระหว่าง &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;{&lt;/span&gt; และ &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;}&lt;/span&gt; ของคำสั่ง &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;\renewcommand\maketitle&lt;/span&gt; นั่นเอง&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-6936086389048418918?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/u3Z3XJwj7-fbQwGaWlG7C9gjhLY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/u3Z3XJwj7-fbQwGaWlG7C9gjhLY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/u3Z3XJwj7-fbQwGaWlG7C9gjhLY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/u3Z3XJwj7-fbQwGaWlG7C9gjhLY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/J9XUAPgVh1g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/6936086389048418918/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=6936086389048418918" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/6936086389048418918?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/6936086389048418918?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/J9XUAPgVh1g/latex_26.html" title="การเขียนวิทยานิพนธ์ ม.ข. ด้วย LaTeX - การสร้างหน้าปกและปกใน" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-lMzg_IhKrIE/TgdNgR7UVMI/AAAAAAAAAHo/dPJ-r0VVoXc/s72-c/front-cover.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2011/06/latex_26.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkABRnozeip7ImA9WhZaEE0.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-3443641932372982072</id><published>2011-06-25T05:18:00.000-07:00</published><updated>2011-06-25T05:25:57.482-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-25T05:25:57.482-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Latex" /><category scheme="http://www.blogger.com/atom/ns#" term="thesis" /><title>การเขียนวิทยานิพนธ์ ม.ข. ด้วย LaTeX - ความเป็นมาและการสร้างคลาส</title><content type="html">&lt;b&gt;ความเป็นมา&lt;/b&gt; &lt;br /&gt;
เรื่องการเขียนวิทยานิพนธ์ ม.ข. ด้วย LaTeX นี่เริ่มเมื่อประมาณปีที่แล้ว คือหลังจากที่ได้ศึกษาเอกสารที่เกี่ยวข้องมาบ้าง (&lt;a href="http://kt-linux.blogspot.com/2010/08/template-latex.html"&gt;เคยบันทึกไว้ที่นี่&lt;/a&gt;) ก็เกิดความอหังการ คิดว่าเราน่าจะทำได้เหมือนกัน จึงคุยกับนักศึกษาปริญญาโทที่อยู่ในความดูแล (&lt;a href="http://sites.google.com/site/aditapphyeesite/home"&gt;คุณอดิเทพ กงจันทร์&lt;/a&gt;) ว่ามาช่วยกันทำคลาส LaTeX สำหรับวิทยานิพนธ์กันดีไหม แล้วจะได้ใช้คลาสนี้เขียนวิทยานิพนธ์ส่งเขาไปเลย ไม่ต้องใช้ MS-Word คุณอดิเทพตกลง (เคยคุยกันเล่น ๆ ช่วงใกล้เส้นตายส่งงานว่าคิดถูกหรือคิดผิดก็ไม่รู้ :p)&lt;br /&gt;
&lt;br /&gt;
พวกเราก็เลยร่วมกันพัฒนาคลาสสำหรับวิทยานิพนธ์ ม.ข. นี้ร่วมกันมา โดยเริ่มต้นจากตัวอย่างวิทยานิพนธ์ของ (&lt;i&gt;รอชื่อ - สกุลจริงอยู่&lt;/i&gt;) อดีตนักศึกษาระดับบัณฑิตศึกษาของภาควิชาคณิตศาสตร์ คณะวิทยาศาสตร์มหาวิทยาลัยขอนแก่น ซึ่งใช้ LaTeX เขียนวิทยานิพนธ์ภาษาอังกฤษแบบ Hard Code คือไม่ได้สร้างเป็นคลาส และไม่ได้ใช้ภาษาไทย&lt;br /&gt;
&lt;br /&gt;
ก็ช่วยกันทำมาเรื่อย ๆ ตั้งแต่เมื่อราว ๆ เดือนพฤศจิกายน 2553 เป็นต้นมา บัดนี้วิทยานิพนธ์ของคุณอดิเทพก็ส่งไปแล้วโดยใช้คลาสที่ช่วยกันเขียนช่วยกันแก้นี่แหละ แม้ว่าคลาสจะยังไม่สมบูรณ์และยังมีส่วนที่ยังปรับปรุงได้อีกมาก แต่ก็ถือว่าใช้ประโยชน์ได้แล้ว จึงถึงเวลาที่จะนำมาเผยแพร่ให้เป็นประโยชน์และให้ชุมชนช่วยกันพัฒนาต่อไป&lt;br /&gt;
&lt;br /&gt;
ในการนี้ได้รับคำแนะนำจาก&lt;a href="http://thep.blogspot.com/"&gt;คุณเทพพิทักษ์&lt;/a&gt;ในกิจกรรม&lt;a href="https://www.facebook.com/notes/kklug/%E0%B8%AA%E0%B8%A3%E0%B8%B8%E0%B8%9B%E0%B9%82%E0%B8%AA%E0%B9%80%E0%B8%A5%E0%B9%88-12/236913339657721"&gt;โสเหล่ครั้งที่ 12&lt;/a&gt; ของ &lt;a href="https://www.facebook.com/kklinux"&gt;KKLUG&lt;/a&gt; ว่าน่าจะอัพโหลดต้นฉบับไว้ที่โฮสต์ที่ไหนสักที่หนึ่ง เพื่อที่ทุก ๆ คนจะได้ร่วมกันพัฒนาต่อไปได้โดยง่าย จึงได้อัพโหลดต้นฉบับคลาสไว้ที่ &lt;a href="http://kkuthesis.sourceforge.net/"&gt;sourceforge.net&lt;/a&gt; ซึ่งหากผู้อ่านท่านใดสนใจก็ขอให้ดาวน์โหลดต้นฉบับโปรแกรมได้และหากติดปัญหาหรือมีข้อเสนอแนะใด ๆ (น่าจะมีเยอะอยู่เพราะโปรแกรมยังไม่มีตัวอย่างและไม่มีคู่มือ) ก็สามารถติดต่อผู้เขียนได้ที่&lt;a href="https://sites.google.com/site/mkittiphong/contact?pli=1"&gt;ห้องทำงาน&lt;/a&gt;ครับ&lt;br /&gt;
&lt;br /&gt;
ในส่วนของบล๊อกก็จะทยอยอธิบายการทำงานของโปรแกรมไปทีละส่วน ๆ เช่นก่อนหน้านี้เคยเขียนไปแล้วหนหนึ่งคือเรื่อง&lt;a href="http://kt-linux.blogspot.com/2011/01/latex.html"&gt;การสร้างสารบัญ&lt;/a&gt; (เป็นอีกเรื่องหนึ่งที่ได้รับคำแนะนำจากโสเหล่ว่าน่าจะพัฒนาได้อีก)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;การสร้างคลาส&lt;/b&gt;&lt;br /&gt;
เนื่องจากคลาสค่อนข้างใหญ่ มีการกำหนดค่าต่าง ๆ มากมายจึงขอนำมาเสนอทีละส่วน โดยจะนำการสร้างคล้าสจากเล็กไปหาใหญ่ทีละขั้น ๆ เริ่มที่การสร้างส่วนที่จำเป็นสำหรับคลาสเป็นอันดับแรก ส่วนประกอบที่สำคัญของคลาสประกอบด้วย&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;ส่วนหัวที่จำเป็นและการประกาศคลาสที่กำลังสร้างอยู่&lt;/li&gt;
&lt;li&gt;หากมีคลาสต้นแบบให้ LoadClass ต้นแบบขึ้นมา หากเราไม่เพิ่มหรือแก้ไขการตั้งค่าในส่วนใด ส่วนนั้นก็จะใช้ค่าตั้งจากคลาสต้นแบบ&lt;/li&gt;
&lt;li&gt;ระบุขนาดกระดาษ&lt;/li&gt;
&lt;li&gt;ระบุขนาดและแบบอักษร&lt;/li&gt;
&lt;/ul&gt;ซึ่งได้ลงคอมเมนต์ไว้ในโค้ดแล้วว่าส่วนใดเป็นส่วนใดดังนี้&lt;br /&gt;
&lt;pre class="prettyprint"&gt;\NeedsTeXFormat{LaTeX2e} % ส่วนหัวที่จำเป็นสำหรับคลาส
\ProvidesPackage{kkuthesis}[2010/11/09 Khon Kaen University Thesis Class] % ชื่อคลาสและรายละเอียด

% ใช้คลาส report เป็นต้นแบบ
\LoadClass[a4paper,oneside,openbib]{report} 

% ใช้ภาษาไทย
\RequirePackage[english,thai]{babel} 
\RequirePackage{thswitch}

% ใช้ตั้งค่าหน้ากระดาษ
\RequirePackage{geometry}

% ใช้เพิ่มรูปภาพ
\RequirePackage{graphicx}

% ตั้งค่าหน้ากระดาษ
\geometry{top=1.5in,bottom=1in,left=1.5in,right=1in,headsep=0.8in}

% ตั้งค่าแบบอักษร อันที่จริงน่าจะใช้ kinnari ได้
% จะใช้แบบอักษรอังศณา จะต้องติดตั้งแบบอักษรอังศณาให้ระบบ LaTeX เสียก่อน 
\def\thairmdefault{angsa}
\usefont{LTH}{angsa}{m}{n}
\fontsize{14pt}{17pt}
\selectfont
&lt;/pre&gt;&lt;br /&gt;
เก็บแฟ้มนี้ไว้ในชื่อ kkuthesis.cls เวลาเรียกใช้ก็สามารถเรียกใช้คลาสนี้แทน report ได้ทันที ถึงจุดนี้สิ่งที่เราทำก็มีเพียงการตั้งค่าหน้ากระดาษและแบบอักษรเท่านั้น ในคราวต่อไปจะนำเสนอส่วนที่ใช้สร้างปก ทั้งปกนอกและปกใน ทั้งภาษาไทยและภาษาอังกฤษต่อไป&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-3443641932372982072?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/a3LJ7r7lO1tfgjmQZoVDFdU8Zn4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/a3LJ7r7lO1tfgjmQZoVDFdU8Zn4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/a3LJ7r7lO1tfgjmQZoVDFdU8Zn4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/a3LJ7r7lO1tfgjmQZoVDFdU8Zn4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/4KA4IhmDe3U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/3443641932372982072/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=3443641932372982072" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/3443641932372982072?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/3443641932372982072?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/4KA4IhmDe3U/latex.html" title="การเขียนวิทยานิพนธ์ ม.ข. ด้วย LaTeX - ความเป็นมาและการสร้างคลาส" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2011/06/latex.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4BQ3k_fyp7ImA9WhZVFU8.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-3503644322584034086</id><published>2011-05-27T12:19:00.000-07:00</published><updated>2011-05-27T12:19:12.747-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-27T12:19:12.747-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Octave" /><category scheme="http://www.blogger.com/atom/ns#" term="Graphic" /><category scheme="http://www.blogger.com/atom/ns#" term="Debian" /><title>เครื่องมือช่วยพล๊อตกราฟ</title><content type="html">ช่วงหลายปีที่ผ่านมาผมทดลองใช้โปรแกรมสำหรับวิเคราะห์และประมวลสัญญาณแทน Matlab สลับไปสลับมาระหว่าง Octave กับ Scilab จุดด้อยของ 2 โปรแกรมนี้สำหรับคนที่คุ้นเคยกับ Matlab ก็คือการพล๊อตกราฟ กล่าวคือมันไม่ค่อยสะดวกสำหรับคนที่ชินกับระบบพล๊อตของ Matlab&lt;br /&gt;
&lt;br /&gt;
หลังจากสำรวจรายการแพคเกจของ wheezy เกี่ยวกับการพล๊อตแล้วก็พบแพคเกจชื่อ plotdrop ซึ่งมีรายละเอียดน่าสนใจดังนี้ (จากรายละเอียดของแพคเกจ)&lt;br /&gt;
&lt;blockquote&gt;&lt;i&gt;PlotDrop is designed for quick simple visualisation of 2D data series.&lt;br /&gt;
It is intended to be used in tandem with an external filesystem browser&lt;br /&gt;
such as GNOME's nautilus or KDE's konqueror. Files containing data are added&lt;br /&gt;
by dragging them from the browser to the file list.&lt;/i&gt;&lt;/blockquote&gt;อันที่จริงมีแพคเกจที่เกี่ยวกับ Data Visualization อีกเยอะเลยครับ แต่ตัวนี้มีลูกเล่นน้อยที่สุดทำให้รู้สึกว่าเรียนรู้ได้ง่ายที่สุด ก็เลยเลือกมาลองก่อน เราสามารถติดตั้งได้ทันทีโดย&lt;br /&gt;
&lt;pre class="prettyprint"&gt;# sudo apt-get install plotdrop
&lt;/pre&gt;หากเป็นเครื่องของผมซึ่งเป็น wheezy แพคเกจนี้จะไปอยู่ในเมนูรูปภาพ (Graphic) ครับ เมื่อเรียกโปรแกรมนี้จากเมนูเราจะเห็นหน้าต่างแบบนี้&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-BkInWzGoA0w/Td_w2wJuGGI/AAAAAAAAAHg/lwORl4SRpag/s1600/PlotDrop01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://1.bp.blogspot.com/-BkInWzGoA0w/Td_w2wJuGGI/AAAAAAAAAHg/lwORl4SRpag/s400/PlotDrop01.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;สิ่งที่เราต้องทำก็คือเอาข้อมูลให้โปรแกรมนี้ไป ข้อมูลจะต้องเป็น&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;แฟ้มข้อความ เข้ารหัสแบบใดก็น่าจะได้ แต่ที่ผมใช้อยู่และไม่มีปัญหาคือ UTF-8&lt;/li&gt;
&lt;li&gt;ข้อมูลแยกหลัก (Column) กล่าวคือ ข้อมูล ก. อยู่หลัก 1 ข้อมูล ข. อยู่หลัก 2 ... อย่างนี้เรื่อยไป&lt;/li&gt;
&lt;li&gt;จำนวนแถว (Row) น่าจะต้องเท่ากัน ผมยังไม่เคยลองว่าถ้าจำนวนแถวไม่เท่ากันจะเกิดอะไรขึ้น&lt;/li&gt;
&lt;/ol&gt;เราเรียกการจัดข้อมูลแบบนี้ว่า Delimated File และใน Octave เรามีคำสั่งที่ใช้จัดเตรียมชุดข้อมูลเพื่อพล็อตแบบนี้โดยใช้คำสั่ง dlmwrite ครับ เช่นถ้าเราต้องการพล็อตแกน x เป็นความถี่ในเวคเตอร์ f ขนาด 100x1 และแกน y เป็นความหนาแน่นสเปคตรัมกำลัง (Power Spectrum Density) P ขนาด 100x1 เช่นกัน เราจะใช้คำสั่ง dlmwrite สร้างแฟ้มข้อมูลที่ใช้กับ plotdrop ได้ดังนี้&lt;br /&gt;
&lt;pre class="prettyprint"&gt;octave&amp;gt; dlmwrite('mydlmfile.dlm',[f P]," ");
&lt;/pre&gt;นี้หมายความว่า เราส่งข้อมูล f และ P ไปในเมตริกซ์เดียวกัน ส่งเข้าไปในแฟ้มข้อความธรรมดาชื่อ mydlmfile.dlm โดยที่ระหว่างข้อมูล f และ P จะคั่นด้วย Space (" ") เช่นถ้า&lt;br /&gt;
&lt;pre class="prettyprint"&gt;octave&amp;gt; f = [0 10 20 30]';
octave&amp;gt; P = [12 15 10 5]';
&lt;/pre&gt;หน้าตาของแฟ้มข้อมูล mydlmfile.dlm จะเป็น&lt;br /&gt;
&lt;pre class="prettyprint"&gt;0 12
10 15
20 10
30 50
&lt;/pre&gt;เราสามารถลากแฟ้มนี้ไปวางในพื้นที่ว่างในรูปข้างบนได้เลย หรือจะเรียกใช้คำสั่ง Series =&amp;gt; Add File ... ก็ได้ เมื่อเราส่งข้อมูลให้ plotdrop ได้แล้ว เราสามารถ&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;เติมหัวเรื่อง ฉลากแกน x และฉลากแกน y ได้ในแท็ป Caption (แท็ปที่ 1)&lt;/li&gt;
&lt;li&gt;เปลี่ยนขอบเขตของ x และ y ได้ในแท็ป Limits (แท็ปที่ 2)&lt;/li&gt;
&lt;li&gt;เปลี่ยนหน้าตาการแสดงผลเช่น เป็นลอการิธึมในแกน x เป็นลอการิธึมในแกน y มีกริด ไม่มีกริด ฯลฯ ได้ในแท็ป Appreance (แท็ปที่ 3)&lt;/li&gt;
&lt;li&gt;เพิ่มคำสั่งอื่น ๆ ในในแท็ปที่ 4 ผมยังไม่รู้ว่ามีคำสั่งพิเศษอะไรที่ใช้ได้บ้าง ตอนนี้ยังไม่จำเป็นเลยไม่ได้สนใจ&lt;/li&gt;
&lt;/ul&gt;เมื่อเราเตรียมข้อมูลใน plotdrop แล้ว เราสามารถพล็อตกราฟดูได้ทันที หากเราพอใจและต้องการจะนำกราฟไปใช้ในเอกสารอื่น ๆ สามารถเก็บพล็อตลงแฟ้มได้โดย Plot =&amp;gt; Plot to File ... ซึ่งผู้ใช้สามารถเลือกรูปแบบของแฟ้มส่งออกได้หลากหลายเช่น EPS PS LaTeX SVG PNG และอื่น ๆ สำหรับผมถ้าจะเอามาใช้กับ LibreOffice ผมก็ใช้แฟ้ม PNG นี่แหละครับ ง่ายดี&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-IdG711zrIOk/Td_3qxRVL5I/AAAAAAAAAHk/xKfMStUZENY/s1600/plotdrop02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="306" src="http://3.bp.blogspot.com/-IdG711zrIOk/Td_3qxRVL5I/AAAAAAAAAHk/xKfMStUZENY/s400/plotdrop02.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
ผมพบว่าโปรแกรม plotdrop ตัวนี้ใช้ง่ายดี ช่วยให้ผมพล็อตกราฟจาก Octave เพื่อไปใช้ต่อในงานเอกสารอื่น ๆ ได้ง่าย เราสามารถเติม Caption ต่าง ๆ ได้สะดวก พล็อตดูได้ก่อน ถ้าชอบค่อยจัดลงแฟ้ม อย่างไรก็ตาม จากการทดลองใช้พบว่าในส่วนของ Caption ต่าง ๆ ยังไม่รองรับภาษาไทยครับ หากกรอกภาษาไทยลงไป เวลาพล็อตผมจะเห็นเป็นตัวเหลื่ยม ๆ แบบนี้ [] ทุกตัวอักษรไป ถ้ารองรับภาษาไทยด้วยคงจะดี&lt;br /&gt;
&lt;br /&gt;
หากใครใช้แล้วมีเทคนิคอะไรจะมาแบ่งกัน ก็อย่าลืมมาบอกกันนะครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-3503644322584034086?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/J3t2kRpmQS70XFlHp1k8JokJGIg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/J3t2kRpmQS70XFlHp1k8JokJGIg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/J3t2kRpmQS70XFlHp1k8JokJGIg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/J3t2kRpmQS70XFlHp1k8JokJGIg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/5pQbucEi2IE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/3503644322584034086/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=3503644322584034086" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/3503644322584034086?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/3503644322584034086?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/5pQbucEi2IE/blog-post_27.html" title="เครื่องมือช่วยพล๊อตกราฟ" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-BkInWzGoA0w/Td_w2wJuGGI/AAAAAAAAAHg/lwORl4SRpag/s72-c/PlotDrop01.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2011/05/blog-post_27.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEBRns_eSp7ImA9WhZWFEk.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-6007165810330252462</id><published>2011-05-14T23:57:00.000-07:00</published><updated>2011-05-14T23:57:37.541-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-14T23:57:37.541-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MIDI" /><category scheme="http://www.blogger.com/atom/ns#" term="Python" /><category scheme="http://www.blogger.com/atom/ns#" term="sound synthesis" /><title>แนวคิดใหม่ (ใหม่สำหรับผม) สำหรับโปรแกรมเกี่ยวกับดนตรีไทย</title><content type="html">ผมเคยมีแนวคิด (ผมไม่ใช่คนแรกที่คิด) ที่จะพัฒนาโปรแกรมที่สามารถช่วยงานนักดนตรีไทย ให้ประพันธ์เพลงไทยได้สะดวกขึ้นดังแสดงไว้ที่ &lt;a href="http://sites.google.com/site/mkittiphong/my_life_with_linux/mahori"&gt;ห้องทำงาน&lt;/a&gt; ในตอนนั้นความรู้ภาษาไพธอนก็มีนิดเดียว ความเข้าใจเรื่องเทคโนโลยีคอมพิวเตอร์ในงานดนตรีก็มีไม่มาก&lt;br /&gt;
&lt;br /&gt;
หลังจากที่ได้รู้จักกับ &lt;a href="http://chuck.cs.princeton.edu/"&gt;Chuck&lt;/a&gt; ที่นำเสนอไว้ใน&lt;a href="http://kt-linux.blogspot.com/search/label/Chuck"&gt;บล๊อกก่อนหน้านี้&lt;/a&gt; ก็พบว่าการเขียนโค้ดไพธอนใหม่เพื่อรับผิดชอบงานทั้งหมดตั้งแต่การเขียนเพลงไปจนถึงบรรเลงเพลงดูจะเป็นงานซ้ำซ้อน (Rebuilding the wheel) โดยเฉพาะการเขียนโค้ดไพธอนให้บรรเลงเพลงได้หลาย ๆ เสียงพร้อมกัน (Concerent Programming) ซึ่งเคยมีคนทำแล้วด้วยซ้ำโดยใช้ภาษาจาวา&lt;br /&gt;
&lt;br /&gt;
เมื่อใตร่ตรองดูแล้วพบว่าปัจจุบันเรามีเทคโนโลยีที่จัดการเรื่องเหล่านี้อยู่แล้ว นั่นก็คือเทคโนโลยี MIDI หมายความว่า หากเราแปลงให้เพลงไทยที่จะประพันธ์โดยใช้โน้ตไทยให้กลายเป็นแฟ้ม MIDI ได้ เราสามารถมอบหมายให้ระบบสังเคราะห์เสียง MIDI รับผิดชอบการสร้างเสียงต่าง ๆ ไม่ว่าจะเป็นเสียงสั้น เสียงยาว เสียงพร้อมกันแบบใด ๆ ก็ตาม สิ่งที่ต้องทำก็คือการสร้างระบบสังเคราะห์เสียงดนตรีไทยในระบบ MIDI ขึ้นมานั่นเอง&lt;br /&gt;
&lt;br /&gt;
ในส่วนของระบบสังเคราะห์เสียงดนตรีไทยในระบบ MIDI นั้นเข้าใจว่ามีคนทำเผยแพร่อยู่มากในรูปแบบของ Soundfont จะไม่กล่าวถึงในที่นี้ แต่จะกล่าวถึงการแปลงโน้ตเพลงไทยเป็นแฟ้ม MIDI โดยใช้ไพธอนแปลงให้อยู่ในรูปโน้ต ABC และแปลงจากโน้ต ABC เป็น MIDI ในที่สุดดังนี้&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;*.tmn =&amp;gt; *.abc =&amp;gt; *.mid&lt;/i&gt; &lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;นามสกุล TMN นั้นย่อมาจาก Thai Music Notation ซึ่งจะเป็นแฟ้มข้อความธรรมดาแต่มีรูปแบบการบันทึกโน้ตตามมาตรฐานของนักดนตรีไทยดังรูป&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-PfSEWKCn9m4/Tc63KfyN1iI/AAAAAAAAAHY/-NZkDE-zwaM/s1600/tmnfile.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/-PfSEWKCn9m4/Tc63KfyN1iI/AAAAAAAAAHY/-NZkDE-zwaM/s400/tmnfile.png" width="368" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&amp;nbsp;บรรทัดแรกคือชื่อเพลง โน้ตเพลงจะเป็นแบบ 2 บรรทัดโดยให้บรรทัดแรกเป็นโน้ตสำหรับมือซ้ายและบรรทัดที่สองเป็นโน้ตสำหรับมือขวาแต่ละบรรทัดเพลงจะมี 8 ห้อง แต่ละห้องคั่นด้วยเครื่องหมาย | และเว้นหนึ่งบรรทัดเมื่อจะขึ้นบรรทัดเพลงใหม่ บันทึกแฟ้มด้วยรหัส UTF-8&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
ส่วนแฟ้ม ABC ก็เป็นการบันทึกโน้ตเพลงด้วยตัวอักษรเช่นเดียวกัน แต่เป็นอักษรภาษาอังกฤษ โดยให้ C = เสียงโด D = เสียงเร เรียงกันไป ระบบนี้สามารถปรับความยาวเสียงได้ รองรับเสียง # และเสียง b และเทคนิคทางดนตรีสากลอื่น ๆ เกือบครบถ้วน รายละเอียดของระบบการบันทึกโน้ตเพลงด้วยตัวอักษร ABC นี้เรียกว่า &lt;a href="http://abcnotation.com/"&gt;ABC Notation&lt;/a&gt; ตัวอย่างของแฟ้ม ABC แสดงดังรูป&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-dhTRHFVqhOo/Tc9aRshhIQI/AAAAAAAAAHc/jyptB40Lots/s1600/abcfile.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="339" src="http://2.bp.blogspot.com/-dhTRHFVqhOo/Tc9aRshhIQI/AAAAAAAAAHc/jyptB40Lots/s640/abcfile.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;ในระบบ ABC สัญลักษณ์ | หมายถึงการกั้นห้องเช่นเดียวกัน สัญลักษณ์ z หมายถึงไม่มีเสียง หากมีตัวโน้ตสองตัวอยู่ในกรอบเดียวกันเช่น [AB] หมายความว่าให้บรรเลงโน้ต ลา และ ที พร้อม ๆ กัน&lt;br /&gt;
&lt;br /&gt;
ระบบการจดบันทึกเสียงดนตรีไทยของเรามีความซับซ้อนน้อยกว่า คือไม่ระบุเทคนิคการบรรเลง (เบา - ดัง) ไม่มีครึ่งเสียง # หรือ b ความยาวเสียงของแต่ละโน้ตเท่ากันหมดคือเท่ากับหนึ่งโน้ตตัวดำ (1 จังหวะ) และแต่ละห้องจะมี 4 จังหวะตายตัวเสมอ หากมีการพลิกแพลงเป็นลูกเล่นแบบใด ๆ ลูกเล่นเหล่านี้นักดนตรีมักจะเรียนกับครูโดยตรง เรียกว่าต่อเพลง หรือไม่เช่นนั้นก็พัฒนาแนวทางของตนเองขึ้นมาแบบด้นสด (Improvise) แต่จะไม่มีระบบการจดบันทึกที่เป็นมาตรฐานเดียวกัน ดังนั้นการแปลงแฟ้ม TMN ไปเป็น ABC จึงทำได้ง่าย&lt;/div&gt;&lt;br /&gt;
พื้นฐานที่ใช้คือสร้าง Empty List ขึ้นมา แล้วให้ไพธอนอ่านแฟ้ม TMN ไปทีละบรรทัด ในแต่ละบรรทัดเมื่อพบตัวอักษรก็เทียบอักษรไทยเข้ากับอักษรอังกฤษ เช่นเทียบ "ด" เป็น "C" เป็นต้น ถ้าหากตัวอักษรมีตัวเปลี่ยนขั้นเสียง เช่น ดํ จะให้หมายถึงเสียง โดสูง หรือ "c" ในระบบ ABC และ ดฺ จะให้หมายถึงเสียง โดต่ำ หรือ "C," ในระบบ ABC ดำเนินการเช่นเดียวกันกับโน้ตเพลงบรรทัดที่สอง&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;L1 = [];
 for i in range(len(line1)):
  if line1[i]=='|':
   L1.append('|');

  if line1[i]==':':
   L1.append(':');

  if line1[i]=='-':
   L1.append('z');

  if line1[i]==u'ด':
   if line1[i+1]==u'\u0e4d':
    L1.append('c');
   elif line1[i+1]==u'\u0e3a':
    L1.append('C,');
   else:
    L1.append('C');&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;
เมื่อได้ List L1 สำหรับบรรทัดที่หนึ่งและ L2 สำหรับบรรทัดที่สองมาแล้วก็นำ List ทั้งสองมาเทียบกัน หากในจังหวะเสียงเดียวกันมีโน้ตทั้งสองบรรทัด ก็ให้บรรเลงโน้ตทั้งสองตัวพร้อมกัน ถ้ามีเพียงโน้ตตัวเดียวก็บรรเลงตัวเดียว ถ้าไม่มีโน้ตทั้งคู่ ก็ให้เงียบเสีย&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;L = [];
 for i in range(len(L1)):
  if L1[i]=='|':
   L.append('|');
  elif L1[i]==':':
   L.append(':');
  elif L1[i]=='z' and L2[i]=='z':
   L.append('z');
  elif L1[i]=='z' or L2[i]=='z':
   if L1[i]=='z':
    L.append(L2[i]);
   else:
    L.append(L1[i]);

  else:
   L.append('['+L1[i]+L2[i]+']');


&lt;/pre&gt;&lt;br /&gt;
นี่คือการแปลงโน้ตอักษรไทยไปเป็นโน้ตอักษรภาษาอังกฤษในระบบ ABC ผมตั้งชื่อโปรแกรมนี้ว่า tmn2abc (Thai Music Notation to ABC) เรียกใช้ดังนึ้&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;# python tmn2abc test.tmn test.abc
&lt;/pre&gt;&lt;br /&gt;
หลังจากนี้เราสามารถใช้เครื่องมือที่มีอยู่แล้วคือโปรแกรม abc2midi แปลงจากแฟ้ม ABC นี้ให้เป็น MIDI ได้ทันที&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;# abc2midi test.abc -o test.mid
&lt;/pre&gt;&lt;br /&gt;
สิ่งที่ต้องการจะทำเพิ่มเติมคือ&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;รองรับระบบโน้ตบรรทัดเดียว สำหรับโน้ตซอ โน้ตขลุ่ย ฯลฯ&lt;/li&gt;
&lt;li&gt;เพิ่มการระบุชั้นเพลง คือ หนึ่งชั้น สองชั้น สามชั้น&lt;/li&gt;
&lt;li&gt;เพิ่มส่วนกำหนดเครื่องดนตรี แต่เรื่องนี้ต้องศึกษามาตรฐาน MIDI เกี่ยวกับการกำหนดช่องสัญญาณและโปรแกรมเพิ่มเติม&lt;/li&gt;
&lt;/ol&gt;ก่อนหน้านี้เคยเขียนโปรแกรมนี้ไว้แล้ว แต่ตอนสำรองข้อมูลก่อนลงระบบใหม่เมื่อตอนทดสอบ Ubuntu ไม่สมบูรณ์ โปรแกรมทั้งชุดจึงหายไปหมด ตอนนี้เขียนใหม่แล้วเลยอัพโหลดไว้เสียเลย ท่านใดสนใจสามารถดูต้นฉบับโปรแกรมได้ &lt;a href="http://sourceforge.net/projects/mahori/files/tmn2abc.tar.gz/download"&gt;sourceforge.net&lt;/a&gt; ครับ หากมีปัญหาหรือข้อแนะนำใด ๆ หากจะทิ้ง Comment ไว้ที่ Blog นี้ได้ก็จะขอขอบคุณล่วงหน้าครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-6007165810330252462?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/a2mX-D4ydSytN4vCcoobadclR-w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/a2mX-D4ydSytN4vCcoobadclR-w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/a2mX-D4ydSytN4vCcoobadclR-w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/a2mX-D4ydSytN4vCcoobadclR-w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/dHFaDib3VSk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/6007165810330252462/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=6007165810330252462" title="4 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/6007165810330252462?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/6007165810330252462?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/dHFaDib3VSk/blog-post.html" title="แนวคิดใหม่ (ใหม่สำหรับผม) สำหรับโปรแกรมเกี่ยวกับดนตรีไทย" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-PfSEWKCn9m4/Tc63KfyN1iI/AAAAAAAAAHY/-NZkDE-zwaM/s72-c/tmnfile.png" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2011/05/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cAQH08fyp7ImA9WhZWFE4.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-7178311537520268539</id><published>2011-04-23T09:17:00.000-07:00</published><updated>2011-05-14T22:57:21.377-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-14T22:57:21.377-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Chuck" /><category scheme="http://www.blogger.com/atom/ns#" term="sound synthesis" /><title>ฆ้อง MIDI ด้วย Chuck</title><content type="html">แนวคิดหนึ่งที่อยากทำมานานก็คือพัฒนาโปรแกรมที่ช่วยให้นักดนตรีไทยประพันธ์เพลงได้สะดวกขึ้น ทางหนึ่งที่ทำได้ก็คือเขียนโปรแกรมรับข้อมูล MIDI จากคีย์บอร์ด แล้วสังเคราะห์เสียงตามคำสั่ง&lt;br /&gt;
&lt;br /&gt;
Chuck มีความสามารถในการสื่อสารกับเครื่องดนตรีอิเล็กทรอนิกส์ทาง MIDI โดยใน Chuck จะมีคลาส MIDI ในตัว การเรียกใช้ความสามารถทาง MIDI ใน Chuck ทำได้ดังตัวอย่าง (จาก &lt;a href="http://chuck.cs.princeton.edu/doc/language/event.html#midi"&gt;Official Chuck Tutorial&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;MidiIn min;
MidiMsg msg;

// open midi receiver, exit on fail
if ( !min.open(0) ) me.exit(); 

while( true )
{
    // wait on midi event
    min =&amp;gt; now;

    // receive midimsg(s)
    while( min.recv( msg ) )
    {
        // print content
     &amp;lt;&amp;lt;&amp;lt; msg.data1, msg.data2, msg.data3 &amp;gt;&amp;gt;&amp;gt;;
    }
}&lt;/pre&gt;&lt;br /&gt;
จากการทดลองพบว่า&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;msg.data1 คือข้อมูล Channel และคำสั่ง MIDI อื่น ๆ เช่น Note-On, Note-Off&lt;/li&gt;
&lt;li&gt;msg.data2 คือขั้นเสียง&lt;/li&gt;
&lt;li&gt;msg.data3 คือความดัง (Velociy)&lt;/li&gt;
&lt;/ul&gt;เราสามารถใช้ msg.data# มาควบคุมการสังเคราะห์เสียงของ Chuck ที่เราทำไว้เมื่อ&lt;a href="http://kt-linux.blogspot.com/2011/04/chuck.html"&gt;คราวก่อน&lt;/a&gt;ได้ดังนี้&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;MidiIn min;
MidiMsg msg;
min.open(0) =&amp;gt; int AmIOpen;

if(!AmIOpen)
{
 &amp;lt;&amp;lt;&amp;lt; "Can not Open MIDI Input Port" &amp;gt;&amp;gt;&amp;gt;;
 me.exit();
}else
{
 while(true)
 {
  min =&amp;gt; now;
  while(min.recv(msg))
  {
   &amp;lt;&amp;lt;&amp;lt; msg.data1,msg.data2,msg.data3,"MIDI Message"&amp;gt;&amp;gt;&amp;gt;;
   if(msg.data3!=0)
   {
    if(msg.data2==59)
    {
     Machine.add("gong01.ck");
    }
    if(msg.data2==60)
    {
     Machine.add("gong02.ck");
    }
   }
  }
 }
}
&lt;/pre&gt;&lt;br /&gt;
เราใช้ msg.data# เป็นเงื่อนไขให้ Chuck เพิ่ง shred ของฆ้องแต่ละลูกเข้าไปใน Chuck ได้ด้วยคำสั่ง&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;Machine.add("gong01.ck");
&lt;/pre&gt;&lt;br /&gt;
เมื่อ gong01.ck gong02.ck ... เป็นสคริปต์สังเคราะห์เสียงฆ้องแต่ละลูก แต่นี่หมายความว่าที่เครื่องคอมพิวเตอร์จะต้องรัน Chuck อยู่แล้วด้วยคำสั่ง&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;# chuck --loop
&lt;/pre&gt;&lt;br /&gt;
ด้วยวิธีนี้ Chuck จะเป็นคนจัดการเรื่องการสังเคราะห์เสียงหลาย ๆ เสียงพร้อม ๆ กันได้เอง เราไม่ต้องเขียนโปรแกรมขึ้นมาใหม่เลย นั่นหมายความว่าหากเราสามารถสร้างสคริปต์สังเคราะห์เสียงเครื่องดนตรีไทยชนิดต่าง ๆ ได้ ชุดโปรแกรมชุดนี้ก็สามารถรับสัญญาณ MIDI มาตรฐานจากโปรแกรมทั่ว ๆ ไปและสร้างเสียงดนตรีไทยทั้งวงได้ทันที&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-7178311537520268539?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7GPCD5p4iKNQtV4w3YrXMxEHcqA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7GPCD5p4iKNQtV4w3YrXMxEHcqA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7GPCD5p4iKNQtV4w3YrXMxEHcqA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7GPCD5p4iKNQtV4w3YrXMxEHcqA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/yXxEqOj9n3M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/7178311537520268539/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=7178311537520268539" title="1 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/7178311537520268539?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/7178311537520268539?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/yXxEqOj9n3M/midi-chuck.html" title="ฆ้อง MIDI ด้วย Chuck" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2011/04/midi-chuck.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UGQ34zeSp7ImA9WhZQE0o.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-3348856474160023287</id><published>2011-04-21T02:35:00.000-07:00</published><updated>2011-04-21T02:47:02.081-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-21T02:47:02.081-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Chuck" /><category scheme="http://www.blogger.com/atom/ns#" term="sound synthesis" /><title>การสังเคราะห์เสียงด้วย Chuck</title><content type="html">ก่อนหน้านี้ได้ลองใช้ Puredata (pd) สังเคราะห์สัญญาณ Decay Sinusoid ซึ่งมีลักษณะเสียงคล้ายเสียงฆ้อง ตั้งใจว่าจะใช้สังเคราะห์เสียงดนตรีไทย แต่ว่าการใช้งาน Python ร่วมกับ Puredata แม้ว่าจะทำได้ แต่ดูเหมือนว่าจะทำได้ยาก เนื่องจากมีเอกสารกำกับน้อย น่าจะเหมาะกับคนที่ใช้ Python จนคล่องแคล่วแล้วมากกว่า&lt;br /&gt;
&lt;br /&gt;
ผมก็เลยกลับมาพิจารณา Chuck อย่างจริงจังอีกครั้งหนึ่งหลังจากที่ได้เอาคู่มือมาพลิกผ่าน ๆ เมื่อหลายเดือนก่อนพบว่าน่าจะสามารถใช้งานร่วมกับ Python ได้ง่ายกว่า&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Chuck คืออะไร&lt;/b&gt; &lt;br /&gt;
Chuck คือ Real-Time Audio Programming Language สำหรับงานสังเคราะห์และเรียบเรียงเสียงสังเคราะห์ โปรแกรมที่เขียนด้วย Chuck จะรันใน Chuck Virtual Machine ที่มีความสามารถในการรันหลาย ๆ โปรแกรม (Shred) ได้พร้อม ๆ กัน และแต่ละ Shred ก็สามารถสื่อสารเพื่อประสานงานกันได้ ท่านที่สนใจสามารถอ่านรายละเอียดเพิ่มเติมได้ที่ &lt;a href="http://chuck.cs.princeton.edu/%20"&gt;http://chuck.cs.princeton.edu/&lt;/a&gt; และ &lt;a href="http://kijjaz.exteen.com/20070702/entry"&gt;http://kijjaz.exteen.com/20070702/entry&lt;/a&gt; (ภาษาไทย)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;ตัวอย่างสคริปต์ที่รันใน Chuck &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;SinOsc s =&amp;gt; dac;
440 =&amp;gt; s.freq;
0.5 =&amp;gt; s.gain;
2::second =&amp;gt; now;
&lt;/pre&gt;&lt;br /&gt;
สคริปต์ข้างต้นนี้จะกระทำ 2 สิ่งคือ ต่อไซนูซอยด์ออสซิลเลเตอร์ (s) เข้ากับซาวด์การ์ด (dac) ตั้งค่าความถี่และขนาดสัญญาณเป็น 440 เฮิรทซ์และ 0.5 ตามลำดับ จากนั้นให้เวลาในสคริปต์เดินหน้าไป 2 วินาทีส่งผลให้เกิดเสียงขึ้น 2 วินาที&lt;br /&gt;
&lt;br /&gt;
เรื่องเวลานี่ทีแรกผมไม่เข้าใจ แต่ถ้าเราเปรียบเทียบกับการเดินหน้าเส้นเทปไป 2 วินาทีก็จะเข้าใจง่ายขึ้น สัญญาณเสียงนั้นอยู่ในเทปอยู่แล้ว แต่ถ้าเส้นเทปไม่เดินผ่านหัวเทปก็จะไม่เกิดเสียงขึ้น&lt;br /&gt;
&lt;br /&gt;
หลังจากเขียนสคริปต์เสร็จแล้วก็บันทึกไว้ในแฟ้มชื่อ foo.ck ก็ได้ (ตามขั้นตอนใน Tutorial เป๊ะ ๆ) ถ้าจะให้ Chuck ทำงานก็เรียกคำสั่ง&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;# chuck foo.ck
&lt;/pre&gt;&lt;br /&gt;
ก็จะได้ยินเสียงไซนูซอยด์ดังออกมาจากลำโพง&lt;br /&gt;
&lt;br /&gt;
นอกจากนี้โปรแกรม Chuck ยังมี Built-in ฟังก์ชันและออบเจกต์ที่ใช้ประมวลผลสัญญาณเสียงอีกมากมาย ที่ใช้บ่อย ๆ ก็คงจะเป็นพวกตัวกรองต่าง ๆ ในงานที่ผมใช้&lt;a href="http://kt-linux.blogspot.com/2011/02/decaying-sinusoid-pd.html"&gt;สังเคราะห์เสียง Decay Sinusoid&lt;/a&gt; ที่มีเสียงคล้ายเสียงฆ้องนั้น เมื่อพิจารณาแล้วสามารถใช้ตัวกรองแบบ Bi-Quad ได้ การใช้ตัวกรอง Bi-Quad ใน Chuck สามารถทำได้ดังนี้&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint linenums:1"&gt;Impulse i =&amp;gt; BiQuad f =&amp;gt; dac;
0.000 =&amp;gt; f.b0;
0.04128430 =&amp;gt; f.b1;
0.000 =&amp;gt; f.b2;
1.0000 =&amp;gt; f.a0; 
-1.99824581 =&amp;gt; f.a1;
0.99995098 =&amp;gt; f.a2;

0.3 =&amp;gt; i.next;
5::second =&amp;gt; now;
&lt;/pre&gt;&lt;br /&gt;
ในสคริปต์นี้&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;บรรทัดแรกจะเรียกใช้ออบเจกต์อิมพัลส์และเชื่อมต่ออิมพัลส์เข้ากับตัวกรอง Bi-Quad และต่อเอาต์พุตจาก Bi-Quad เข้ากับซาวด์การ์ดของเรา&amp;nbsp;&lt;/li&gt;
&lt;li&gt;บรรทัดที่ 2 - 7 ระบุค่า Coefficient ของตัวกรองทั้ง 6 ตัว&amp;nbsp;&lt;/li&gt;
&lt;li&gt;บรรทัดที่ 8 ระบุขนาดของอิมพัลส์ที่จะส่งเข้าตัวกรอง&lt;/li&gt;
&lt;li&gt;บรรทัดที่ 9 ระบุช่วงเวลาที่จะให้ Chuck ส่งเสียงออกมา&lt;/li&gt;
&lt;/ul&gt;นี่คือเสียงสังเคราะห์ของฆ้องวงเล็กลูกแรก ผมบันทึกแฟ้มเป็น gong01.ck ถ้าต้องการให้ Chuck สร้างเสียงฆ้องลูกนี้ก็เรียกใช้คำสั่ง&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;# chuck gong01.ck
&lt;/pre&gt;&lt;br /&gt;
ก็จะได้ยินเสียงคล้าย ๆ เสียงฆ้องดังออกมา&lt;br /&gt;
&lt;br /&gt;
จากที่ทดลองพบว่าการใช้ Chuck นั้นง่ายพอ ๆ กับ puredata แต่ว่าถ้าคิดถึงการเชื่อมต่อกับโปรแกรมอื่น ๆ เพื่อให้ทำงานร่วมกันหลังฉากโดยไม่ต้องให้ผู้ใช้งงกับหน้าต่างมาก ๆ โปรแกรม Chuck ดูเหมือนจะเป็นทางเลือกที่ดีกว่า ต่อไปนี้ก็จะลองใช้ Chuck เพื่อสังเคราะห์เสียงอื่น ๆ ต่อไปดู&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-3348856474160023287?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3GnkuVLOkskLNqPoJWmWkLp0zd8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3GnkuVLOkskLNqPoJWmWkLp0zd8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3GnkuVLOkskLNqPoJWmWkLp0zd8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3GnkuVLOkskLNqPoJWmWkLp0zd8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/koo07OBTuyk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/3348856474160023287/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=3348856474160023287" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/3348856474160023287?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/3348856474160023287?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/koo07OBTuyk/chuck.html" title="การสังเคราะห์เสียงด้วย Chuck" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2011/04/chuck.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcGQHc8eyp7ImA9WhZREUQ.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-7510528139300651815</id><published>2011-04-05T10:15:00.000-07:00</published><updated>2011-04-07T10:23:41.973-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-07T10:23:41.973-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Printer" /><category scheme="http://www.blogger.com/atom/ns#" term="Debian" /><title>ติดตั้งเครื่องพิมพ์ Canon LBP3050 บน Debian (wheezy)</title><content type="html">&lt;span style="color: red;"&gt;[ T_T สุดท้ายก็ไม่สามารถพิมพ์ภาพได้ครับ นอกจากนี้เมื่อตอนทดสอบยังไม่ได้ทดสอบกับภาษาไทย พอทดสอบกับภาษาไทยก็ยิ่งแย่ ตัวหนังสือตีกันไปหมด ตอนนี้ยกธงขาวแล้ว แฟนจะเหน็บก็ต้องยอมแล้วล่ะ]&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
ที่บ้านมีเครื่องพิมพ์อยู่เครื่องหนึ่งคือ Canon LBP3050 เป็นของแฟน พอจัดห้องทำงานที่บ้านใหม่แฟนก็ยกเครื่องพิมพ์เครื่องนี้ให้ แต่ว่าเวลาเอามาใช้กับเครื่องคอมพ์ของผมดันพิมพ์งานไม่ออก!! ทั้ง ๆ ที่ Linux ตรวจเจอเครื่องพิมพ์&lt;br /&gt;
&lt;br /&gt;
งานเข้าล่ะครับ เพราะแฟนผมชอบเหน็บให้เจ็บใจเล่น ๆ เวลาที่ Linux ทำอะไรบางอย่างไม่ได้ในขณะที่ Windows ของเธอทำได้ (ผมก็เหน็บเธอเหมือนกันเวลาที่ Windows ทำอะไรบางอย่างไม่ได้ในขณะที่ Linux ทำได้ ก็เจ๊ากันไปนะ ฮิ ฮิ)&lt;br /&gt;
&lt;br /&gt;
ผมพบว่าระบบตรวจจับเครื่องพิมพ์อัตโนมัติของ Linux ใช้ไม่ได้กับเครื่องพิมพ์บางจำพวก และเจ้า Canon LBP3050 เครื่องนี้ก็เป็นหนึ่งในนั้นครับ ในกรณีของ Canon LBP3050 นั้นผมคิดว่าเป็นเพราะ LBP3050 เป็นเครื่องพิมพ์ที่ใช้เทคโนโลยี &lt;a href="http://www.bubblejet.canon.com.my/technolog/capt_lbp.htm"&gt;CAPT - Canon Advanced Printing Technology&lt;/a&gt; ซึ่งทาง Canon โฆษณาว่าสามารถพิมพ์งานได้เร็ว และพิมพ์งานที่ขนาด (หน่วยความจำ) ใหญ่ได้โดยไม่ต้องเพิ่มหน่วยความจำ ... เอาเถอะ ... จะเป็นอะไรก็ช่าง เอาเป็นว่าถ้าจะใช้เครื่องพิมพ์ตระกูล CAPT จะต้องมี CAPT Driver ไม่ว่าจะเป็นบน Linux Mac หรือ Windows ก็ตาม ทีนี้ในระบบ Linux เราใช้ &lt;a href="http://www.cups.org/"&gt;CUPS - Common UNIX Printing Solution&lt;/a&gt; ก็แปลว่าเจ้า CAPT Driver ที่ว่าจะต้องคุยกับ CUPS ให้รู้เรื่อง และการทำให้มันคุยกันรู้เรื่อง ก็ต้องใช้การติดตั้งที่ถูกต้องจึงจะสำเร็จ&lt;br /&gt;
&lt;br /&gt;
การติดตั้งมีด้วยกัน 4 ขั้นตอนคือ&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;จัดหาแพคเกจที่จำเป็น&lt;/li&gt;
&lt;li&gt;ติดตั้งแพคเกจดังกล่าว&lt;/li&gt;
&lt;li&gt;ติดตั้งเครื่องพิมพ์ลงบน CUPS&lt;/li&gt;
&lt;li&gt;ผูกเครื่องพิมพ์เข้ากับ Service ccpd &lt;/li&gt;
&lt;li&gt;ใช้ insserv สั่งให้เริ่มบริการ ccpd โดยอัตโนมัติทุกครั้งที่มีการเริ่มระบบใหม่&lt;/li&gt;
&lt;li&gt;เรียกใช้ ccpd เพื่อใช้งานเครื่องพิมพ์&lt;/li&gt;
&lt;/ol&gt;รายละเอียดการติดตั้งมีอยู่ในแฟ้มเอกสารที่มาพร้อมกับแพคเกจที่จำเป็น แต่จะขอบันทึกไว้เผื่อว่าจะได้ใช้ในภายหลัง โดยจะเขียนอธิบายตามรายการข้างต้นไปทีละข้อ ๆ&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;จัดหาแพคเกจที่จำเป็น&lt;/b&gt;&lt;br /&gt;
ดาว์นโหลดได้ที่เว็บไซต์ &lt;a href="http://support-au.canon.com.au/contents/AU/EN/0900772408.html"&gt;Canon ออสเตรเลีย&lt;/a&gt;เลยครับ (ค้น ๆ ดูมีที่สิงค์โปร์ด้วย ส่วนเมืองไทยไม่มีนะครับ) แฟ้มที่โหลดได้คือ &lt;a href="http://support-au.canon.com.au/contents/AU/EN/0900772408.html"&gt;CAPT_Printer_Driver_for_Linux_v220_uk_EN.tar.gz&lt;/a&gt; ขนาดประมาณ 33 MB&lt;br /&gt;
เมื่อได้มาแล้วก็แตกแฟ้มไว้ที่ไหนสักแห่ง ซึ่งต่อไปจะขอเรียกไดเรคทอรีนี้ว่า #Canon เพื่อความสะดวก&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;ติดตั้งแพคเกจดังกล่าว&lt;/b&gt;&lt;br /&gt;
เมื่อแตกแฟ้มแล้วจะพบแพคเกจ&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;cndrvcups_common_2.20-1_i386.deb&amp;nbsp; และ&lt;/li&gt;
&lt;li&gt;cndrvcups_capt_2.20-1_i386.deb&lt;/li&gt;
&lt;/ul&gt;อยู่ในไดเรคทอรี #Canon/CAPT_Printer_Driver_for_Linux_v220_uk_EN/32-bit_Driver/Debian ติดตั้งแพคเกจตามลำดับที่แสดงไว้ข้างต้น โดยใช้ GDebi หรือ dpkg ก็ได้ ในกรณีของผมเองปัจจุบันใช้ Debian wheezy อยู่ จะขาดแพคเกจที่จำเป็นไปหนึ่งแพคเกจคือ gs-eps ผมก็แก้ไขโดยการเพิ่ม Repository ของ squeeze ลงไปใน sourcelist ก็พบแพคเกจ gs-eps ซึ่งเป็น Transition Package อยู่ ติดตั้งแพคเกจนี้เข้าไปก็ใช้ได้แล้ว&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;ติดตั้งเครื่องพิมพ์ลงบน CUPS&lt;/b&gt;&lt;br /&gt;
เมื่อติดตั้งแพคเกจทั้งสองเสร็จสิ้นให้เริ่ม CUPS ใหม่ซึ่งทำได้โดยใช้คำสั่ง&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# /etc/init.d/cups restart &lt;/div&gt;&lt;br /&gt;
จากนั้นก็เพิ่มเครื่องพิมพ์ลงในคิวของ CUPS ด้วยคำสั่ง&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#&amp;nbsp; lpadmin -p LBP3050 -m CNCUPSLBP3050CAPTK.ppd -v ccp://localhost:59687 -E&lt;/div&gt;&lt;br /&gt;
เมื่อข้อมูลหลังตัวเลือกต่าง ๆ มีความหมายดังนี้&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-p [Printer Name]&lt;/span&gt; ระบุชื่อที่ระบบเราจะใช้เรียก จะตั้งว่าอะไรก็ได้&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-m [ppd file]&lt;/span&gt; ระบุแฟ้ม ppd ที่เป็นตัว Driver ของเครื่องพิมพ์ของเรา ในรายละเอียดการติดตั้งที่ให้มาพร้อมกับแพคเกจจะบอกว่าเครื่องพิมพ์ของเราจะต้องใช้แฟ้ม ppd ตัวไหน ส่วนรายการเครื่องพิมพ์สำหรับ wheezy จะอยู่ที่ /usr/share/cups/model &lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-v [Device URI]&lt;/span&gt; ระบุ URI ที่เราจะให้เป็นทางผ่านข้อมูลสำหรับเครื่องพิมพ์ของเรา URI ที่เขียนไว้ตรงนี้ลอกมาจากรายละเอียดการติดตั้ง จากที่ค้น ๆ ดู ในกรณีทั่ว ๆ ไป ใคร ๆ ก็ใช้ URI นี้ มีบางกรณีของ UBUNTU ที่จะใช้ URI เป็น FIFO0 อันนี้ยังไม่ได้ลองว่าใช้ได้หรือไม่&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-E&lt;/span&gt; เป็นการสั่ง Enable เครื่องพิมพ์&lt;/li&gt;
&lt;/ul&gt;กระบวนการทั้งหมดนี้น่าจะสามารถทำด้วย GUI ได้ด้วย ระบบ-&amp;gt;ดูแลระบบ-&amp;gt;เครื่องพิมพ์ เพื่อเรียกเครื่องมือตั้งค่าเครื่องพิมพ์ของ GNOME โดยที่ตัวเลือก -E ข้างหลังสุดของคำสั่งนั้นคือการ Enable เครื่องพิมพ์นั่นเอง &lt;span style="color: red;"&gt;[ยังไม่ได้ลอง]&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
หลังจากนี้ถ้าเราเปิดเครื่องมือการตั้งค่าเครื่องพิมพ์ของ GNOME ดู ควรจะเห็นเครื่องพิมพ์ของเราปรากฏอยู่ในรายการด้วย ดังเช่นที่แสดงในรูปนี้ (เราต้องรู้ชื่อของเครื่องพิมพ์ของเรา เพราะเราเป็นคนตั้งชื่อเองด้วยตัวแปรหลังตัวเลือก -p ของคำสั่ง lpadmin)&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ub-DY6w3KEM/TZszDpvlezI/AAAAAAAAAHI/x9Z1zjCqLCE/s1600/Screenshot-Printing+-+localhost.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="227" src="http://4.bp.blogspot.com/-ub-DY6w3KEM/TZszDpvlezI/AAAAAAAAAHI/x9Z1zjCqLCE/s400/Screenshot-Printing+-+localhost.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;ตอนนี้ยังใช้เครื่องพิมพ์ไม่ได้นะครับ&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="color: red;"&gt;[ตามความเข้าใจของผม]&lt;/span&gt; เพราะเราใช้ CAPT ซึ่งมีการ "ยำ" ข้อมูลก่อนส่งออกเครื่องพิมพ์ ดังนั้นถ้าเราส่งไปตรง ๆ เหมือนส่งเข้าเครื่องพิมพ์ประเภทอื่น ๆ เครื่องพิมพ์ก็จะไม่เข้าใจ จึงจำเป็นต้องมีข้อต่อไป&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;ผูกเครื่องพิมพ์เข้ากับ Service ccpd&lt;/b&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: left;"&gt;ซึ่งทำได้โดย&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: left;"&gt;# ccpdadmin -p LBP3050 -o /dev/usb/lp0&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;นี่เป็นการบอก ccpd ว่าเครื่องพิมพ์ CUPS ชื่อ LBP3050 นั้นต่ออยู่กับช่องทางไหน ทีนี้ในคู่มือการติดตั้งเตือนไว้เหมือนกันว่า ถ้ามีเครื่องพิมพ์ USB หลายเครื่อง ลำดับก่อนหลังของ lp จะเรียงตามลำดับการต่อเครื่องพิมพ์เข้ากับคอมพิวเตอร์ ใน&lt;a href="https://help.ubuntu.com/community/CanonCaptDrv190"&gt;อินเตอร์เนต&lt;/a&gt;มีคำแนะนำการตั้งค่าบริการ ccpd ให้ตั้งค่าเองเมื่อเสียบสาย USB ของเครื่องพิมพ์เข้ากับคอมพิวเตอร์ &lt;span style="color: red;"&gt;(แต่เป็นของ UBUNTU นะ)&lt;/span&gt; พอดีผมมีเครื่องพิมพ์เครื่องเดียวและต่ออยู่ตลอดเลยไม่สนใจสถานการณ์ที่ว่านี้&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;หลังจากนี้ ถ้าเริ่มบริการ ccpd ก็จะสามารถพิมพ์ได้เลย การเริ่มบริการ ccpd ทำได้โดย&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: left;"&gt;# /etc/init.d/ccpd start&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;หรือไม่ก็ใช้ ระบบ-&amp;gt;ดูแลระบบ-&amp;gt;บริการระบบ เริ่มบริการ ccpd ก็ได้ ถ้าอยากให้บริการ ccpd เริ่มเองทุกครั้งก็ไปขั้นตอนถัดไป&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;ใช้ insserv สั่งให้เริ่มบริการ ccpd โดยอัตโนมัติทุกครั้งที่มีการเริ่มระบบใหม่&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;ในการนี้เราจะต้องแก้ไขแฟ้ม /etc/init.d/ccpd โดยการเพิ่มคอมเมนต์ต่อไปนี้เข้าไปในบรรทัดที่สามของ ccpd คอมเมนต์ที่จะเติมนี้ขอแนะนำว่าให้ไปคัดลอกจากต้นฉบับที่คู่มือการติดตั้ง ซึ่งอยู่ใน #Canon/CAPT_Printer_Driver_for_Linux_v220_uk_EN/Doc โดยตรงจะดีที่สุด&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;### BEGIN INIT INFO&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# Provides:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ccpd&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# Required-Start:&amp;nbsp;&amp;nbsp; $local_fs $remote_fs $syslog $network $named&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# Should-Start:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ALL&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# Required-Stop:&amp;nbsp;&amp;nbsp;&amp;nbsp; $syslog $remote_fs&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# Default-Start:&amp;nbsp;&amp;nbsp;&amp;nbsp; 3 5&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# Default-Stop:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 1 2 6&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# Description:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Start Canon Printer Daemon for CUPS&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;### END INIT INFO&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;ผมก็สงสัยว่ามันเป็นคอมเมนต์ แล้วไปเติมมันทำไม เลยเข้าไปอ่านรายละเอียดของ &lt;a href="http://susefaq.sourceforge.net/faq/services.html"&gt;insserv&lt;/a&gt; จึงได้ทราบว่าเจ้า insserv นี่จะเข้าไปอ่านคอมเมนต์ในสคริปต์แล้วเติมบริการนี้เข้าไปในรายการที่จะต้องเริ่มอัตโนมัติตอนเริ่มระบบ แต่ว่าแค่เติมคอมเมนต์นี่เข้าไปยังไม่พอ จะต้องเรียกคำสั่ง&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: left;"&gt;# insserv ccpd&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;ด้วย ในระบบของผมมี Warning ขึ้นมานิดหน่อย แต่อ่าน ๆ ดูแล้วคิดว่าไม่สำคัญมาก ก็ปล่อยผ่านไป ทีนี้ถ้าท่านค้นข้อมูลจากอินเตอร์เนตท่านอาจจะพบวิธีการแก้ไขสคริปต์ที่ว่านี้หลาย ๆ แบบ ผมก็ลองแล้วปรากฏว่าไม่เวิร์ก อาจจะด้วยหลาย ๆ เหตุผล เช่นผมคัดลอกสคริปต์มาไม่สมบูรณ์หรืออะไรก็สุดแท้แต่ สุดท้ายผมมาใช้สคริปต์ต้นฉบับตามคู่มือของ Canon เองนั่นแหละ ถึงได้พิมพ์ได้ในที่สุด&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;ถึงขั้นตอนนี้ถ้าทั้ง cups และ ccpd กำลังทำงานอยู่ เราก็สามารถพิมพ์งานได้เลย&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;ระบบ CAPT ให้เครื่องมือกับเรามาอีก 2 อย่างก็คือ&lt;/div&gt;&lt;ul&gt;&lt;li&gt;captstatusui และ&lt;/li&gt;
&lt;li&gt;cngplp (ผมเดาว่าคงจะเป็น Canon General Purpose lp)&lt;/li&gt;
&lt;/ul&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# captstatusui -P LBP3050&lt;/div&gt;&lt;br /&gt;
สั่งงานพิมพ์จากบรรทัดคำสั่ง (แทน lpr) ได้โดย&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# cngplp -p [Filename to be printed]&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: left;"&gt;&lt;b&gt;หมายเหตุ&lt;/b&gt;&lt;/div&gt;ในคู่มือระบุว่าระบบ CAPT จะทำงานได้สมบูรณ์จำเป็นจะต้องติดตั้ง libstdc++5 เสียก่อน แม้ว่าระบบของผมมี libstdc++6 อยู่แล้ว แต่เพราะผมไม่ทราบแน่ชัดว่าใช้ได้หรือไม่ จึงติดตั้ง libstdc++5 ลงไปอยู่ดี&lt;br /&gt;
&lt;br /&gt;
ที่พิมพ์ได้ตอนนี้คือ PS PDF และ ODT ที่ไม่มีรูปภาพ :o ตอนนี้กำลังหาทางอยู่ว่าถ้าจะพิมพ์รูปด้วยจะต้องทำอย่างไร :(&lt;br /&gt;
&lt;br /&gt;
ที่ต้องลำบากลำบนขนาดนี้ เป็นเพราะว่าต้องพยายามใช้เครื่องที่มีอยู่ในเกิดประโยชน์ หากเป็นการพิจารณาซื้อเครื่องใหม่ ท่านอาจมีตัวเลือกที่สะดวกกว่าโดยเฉพาะเครื่องพิมพ์ที่มีรายการ Driver อยู่ใน CUPS อยู่แล้วเป็นต้น&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-7510528139300651815?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bzfKY4Ai6IsFd79Fejih32EP_qA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bzfKY4Ai6IsFd79Fejih32EP_qA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bzfKY4Ai6IsFd79Fejih32EP_qA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bzfKY4Ai6IsFd79Fejih32EP_qA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/tNuaNuufXQk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/7510528139300651815/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=7510528139300651815" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/7510528139300651815?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/7510528139300651815?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/tNuaNuufXQk/canon-lbp3050-debian-wheezy.html" title="ติดตั้งเครื่องพิมพ์ Canon LBP3050 บน Debian (wheezy)" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-ub-DY6w3KEM/TZszDpvlezI/AAAAAAAAAHI/x9Z1zjCqLCE/s72-c/Screenshot-Printing+-+localhost.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2011/04/canon-lbp3050-debian-wheezy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIDSXo4fip7ImA9WhZQE0o.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-3195284923799392818</id><published>2011-02-26T10:08:00.000-08:00</published><updated>2011-04-21T02:36:18.436-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-21T02:36:18.436-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="puredata" /><category scheme="http://www.blogger.com/atom/ns#" term="sound synthesis" /><title>การสร้างสัญญาณ Decaying Sinusoid ด้วยตัวกรองดิจิตอลโดยใช้ pd</title><content type="html">แบบจำลองของเสียงจากเครื่องดนตรีแบบหนึ่งคือ Decaying Sinusoid ซึ่งก็คือสัญญาณตระกูลไซนูซอยด์ที่มีขนาดลดลงด้วยอันดับเอกโพเนนเชียลเมื่อเวลาผ่านไป สัญญาณลักษณะนี้สามารถเขียนเป็นสมการได้&lt;br /&gt;
&lt;div style="text-align: center;"&gt;amath y(t) = A*e^{-b*t}*sin( omega_{c} * t ) endamath&lt;/div&gt;&lt;div style="text-align: left;"&gt;เมื่อ amath A endamath คือขนาดของสัญญาณ amath a endamath คืออัตราการลดทอน amath omega_{c} endamath คือความถี่มีหน่วยเป็น rad/sec และ amath t endamath คือเวลา&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-pwn_FGaP9jg/TWgC6P4NXbI/AAAAAAAAAHA/-9RBTcBhA54/s1600/decaysin.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="198" src="http://1.bp.blogspot.com/-pwn_FGaP9jg/TWgC6P4NXbI/AAAAAAAAAHA/-9RBTcBhA54/s400/decaysin.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;สัญญาณ Decaying Sinusoid (เส้นสีแดงและเส้นสีเขียวเป็นเพียงเส้นนำสายตาเท่านั้น)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;กลยุทธ์การสังเคราะห์เสียงลักษณะนี้ก็คือการใช้ตัวกรองที่มีผลตอบสนองอิมพัลส์ (Impulse Response) ที่มีหน้าตาแบบนี้เลย คือถ้าใส่อิมพัลส์เข้าไป ให้ตัวกรองส่งสัญญาณหน้าตาแบบนี้ออกมา ซึ่งเราสามารถสร้างตัวกรองดังกล่าวได้โดยใช้กรรมวิธีการออกแบบตัวกรองดิจิตัลแบบอิมพัลส์ไม่เปลี่ยนแปลง (Impulse Invariant Method)&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;ด้วยวิธี Impulse Invariant Method เราสามารถเขียนผลตอบสนองของตัวกรองดิจิตัลในรูปแบบสัญญาณดิสครีตได้ดังนี้&lt;br /&gt;
&lt;div style="text-align: center;"&gt;amath y(n) = A*e^{-k*n}*sin(omega_{d}*n) endamath&lt;/div&gt;&lt;div style="text-align: left;"&gt;เมื่อ amath k endamath เป็นอัตราลดทอนที่แปลงมาจาก amath b endamath amath omega_{d} endamath เป็นความถี่ในโดเมนดิสครีตมีหน่วยเป็น rad/sample และ amath n endamath คือ index ของสัญญาณดิสครีต&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;ตัวกรองที่มีผลตอบสนองอิมพัลส์เป็นสัญญาณนี้คือตัวกรองที่มี Transfer Function - H(z) เป็น z-Transform ของสัญญาณนี้นั่นเอง ซึ่งจาก&lt;a href="http://en.wikipedia.org/wiki/Z-transform#Table_of_common_Z-transform_pairs"&gt;ตารางการแปลง z&lt;/a&gt; ทำให้เราทราบว่า&lt;/div&gt;&lt;div style="text-align: center;"&gt;amath A*e^{-k*n}*sin(omega_{d}*n) -&amp;gt; (e^{-k}*sin(omega_{d})*z^{-1})/(1-2*e^{-k}*cos(omega_{d})*z^{-1}+e^{-2*k}*z^{-2}) endamath&lt;/div&gt;&lt;div style="text-align: left;"&gt;เราสามารถสร้างตัวกรองนี้ใน puredata ได้โดยตรงโดยใช้ออบเจ็ค fexpr~ สร้างสมการผลต่าง (Difference Equation) ไดัเป็น&lt;br /&gt;
&lt;div style="text-align: center;"&gt;amath y(n) = e^{-k}*sin(omega_{d})*x(n-1)+2*e^{-k}*cos(omega_{d})*y(n-1)-e^{-2*k}y(n-2) endamath&lt;br /&gt;
&lt;div style="text-align: left;"&gt;และต่อเป็นแพตช์ใน puredata ได้ดังรูป&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-_dYBDC8Hgv8/TWgHlonKRAI/AAAAAAAAAHE/9cXErADRm5o/s1600/Screenshot-decaysine.pd++-+-media-DATA-Research-ElectricGong-pd.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="468" src="http://4.bp.blogspot.com/-_dYBDC8Hgv8/TWgHlonKRAI/AAAAAAAAAHE/9cXErADRm5o/s640/Screenshot-decaysine.pd++-+-media-DATA-Research-ElectricGong-pd.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
ซึ่งเราสร้างขึ้นมาเป็น sub-patch ให้รับอินพุตได้ 4 ค่าคือ&lt;/div&gt;&lt;ol&gt;&lt;li&gt;อิมพัลส์ (x1 ใน fexpr~) เป็นตัวกระตุ้นตัวกรอง ซึ่ง puredata patch สำหรับอิมพัลส์สามารถดูได้จาก&lt;a href="http://kt-linux.blogspot.com/2011/02/impulse-discrete-pd.html"&gt;ผลงานเมื่อคราวก่อน &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;อัตราการลดทอน (f2 ใน fxpr~ - หมายถึงอินพุตที่ 2 และเป็นตัวแปรประเภท Float) amath e^{-k} endamath &lt;/li&gt;
&lt;li&gt;ความถี่ในโดเมนดิสครีต หน่วยเป็น rad/sample (ระบุผ่าน f3 - amath cos(omega_{d}) endamath และ f4 - amath sin(omega_{d}) endamath)&lt;/li&gt;
&lt;li&gt;อัตราชักตัวอย่าง (Sampling Rate -fs) ไว้ใช้คำนวณค่า amath omega_{d} endamath ก่อนส่งเข้าไปใน fexpr~&lt;/li&gt;
&lt;/ol&gt;ในโอกาสต่อไปจะนำเสนอการนำ Decaying Sinusoid ไปสร้างเสียงสังเคราะห์ที่ซับซ้อนมากขึ้น&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-3195284923799392818?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/atwgBwAG31NyELR4jsct_Lj54WQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/atwgBwAG31NyELR4jsct_Lj54WQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/atwgBwAG31NyELR4jsct_Lj54WQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/atwgBwAG31NyELR4jsct_Lj54WQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/qTEUO46hlA8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/3195284923799392818/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=3195284923799392818" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/3195284923799392818?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/3195284923799392818?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/qTEUO46hlA8/decaying-sinusoid-pd.html" title="การสร้างสัญญาณ Decaying Sinusoid ด้วยตัวกรองดิจิตอลโดยใช้ pd" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-pwn_FGaP9jg/TWgC6P4NXbI/AAAAAAAAAHA/-9RBTcBhA54/s72-c/decaysin.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2011/02/decaying-sinusoid-pd.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0AGRn45cCp7ImA9Wx9aEEU.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-3674477468871997481</id><published>2011-02-08T11:41:00.000-08:00</published><updated>2011-03-02T08:02:07.028-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-02T08:02:07.028-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="puredata" /><title>การสร้าง Impulse (Discrete) ใน pd เพื่อใช้ทดสอบตัวกรอง</title><content type="html">ผมหัดใช้ pd มาได้สักพักแล้ว ตอนนี้กำลังทำโครงงานที่สอง (เลยนึกได้ว่าไม่เคยบันทึกโครงงานแรกลงในบล๊อกเลย) ในโครงงานนี้เราจะสร้างตัวกรอง (Filter) เพื่อสังเคราะห์สัญญาณเสียงขึ้นมา ซึ่งตัวกรองจะทำงานได้ต้องมีอินพุต และอินพุตที่เราจะใช้นั้นเป็นอิมพัลส์ (Impulse) ในดิสครีตโดเมน&lt;br /&gt;
&lt;br /&gt;
ใน pd-extended นั้นจะมีออบเจ็ค dirac~ ให้ใช้อยู่ แต่เนื่องจากผมใช้เดเบียนซึ่งใน Repository มีแต่ pd-vanilla ซึ่งไม่มีออบเจ็ค dirac~ ให้ใช้ ก็ต้องสร้างเอง&lt;br /&gt;
&lt;br /&gt;
การสร้างได้แนวทางมาจาก &lt;a href="http://www.mail-archive.com/pd-list@iem.at/msg12771.html"&gt;http://www.mail-archive.com/pd-list@iem.at/msg12771.html &lt;/a&gt;และหลังจากลองผิดลองถูกมาได้สักพัก ก็สามารถสร้าง Discrete Impulse ขึ้นมาจนได้ดังรูป&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_d72Ndtf-05M/TVGb7_VDbJI/AAAAAAAAAGw/1nilWeSyXVU/s1600/mydirac%257E.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_d72Ndtf-05M/TVGb7_VDbJI/AAAAAAAAAGw/1nilWeSyXVU/s1600/mydirac%257E.png" /&gt;&lt;/a&gt;&lt;/div&gt;หลักการทำงานก็คือ&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;รับข้อความ \$1 0 มาจาก inlet เมื่อ \$1 เป็นตัวแปรที่ส่งเข้ามาเพื่อใช้เป็นขนาดของอิมพัลส์&lt;/li&gt;
&lt;li&gt;ส่งข้อความไปให้ vline~ สร้างสัญญาณเป็น \$1 ทันทีที่ได้รับข้อความ&lt;/li&gt;
&lt;li&gt;หลังจากนั้น ข้อความ \$1 0 จะส่งทริกเกอร์ไปยังการคำนวณคาบเวลา T=1/fs (ในที่นี้ใช้ 1.5/fs แทน เผื่อไว้กันเหนียว)&lt;/li&gt;
&lt;li&gt;สร้างข้อความ 0 0 \$1 เมื่อ \$1 ระยะเวลาเป็นหน่วยมิลลิวินาทีที่รอก่อนที่ vline~ จะสั่งให้ตั้งค่าเป็นศูนย์ เราพยายามจะตั้งให้ได้ 1 Sample=1/fs พอดี แต่เพื่อผลที่แน่นอนใน Patch นี้เราเลยเลือกใช้เป็น 1.5/fs แทน&lt;/li&gt;
&lt;li&gt;ส่งข้อความไปให้ vline~ เพื่อตั้งค่าให้เป็น 0&lt;/li&gt;
&lt;li&gt;ส่งออกเป็น Stream ไปที่ outlet~&lt;/li&gt;
&lt;/ol&gt;ทดลองแล้วใช้ได้ผลดี ถ้าต้องการตรวจสอบผล ให้เพิ่มออบเจ็ค print~ ไปที่เอาต์พุตของ vline~ และให้รับ bang มาจากข้อความไหนก็ได้ใน Patch ด้วย จะเห็นผลลัพธ์ดังรูปต่อไปนี้&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_d72Ndtf-05M/TVGcCrfDAQI/AAAAAAAAAG0/8flJCq0oOB4/s1600/mydiracResult.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_d72Ndtf-05M/TVGcCrfDAQI/AAAAAAAAAG0/8flJCq0oOB4/s1600/mydiracResult.png" /&gt;&lt;/a&gt;&lt;/div&gt;ต่อไปนี้ก็สามารถทดสอบตัวกรองต่าง ๆ ได้ ซึ่งถ้ามีอะไรน่าสนใจก็จะนำมาเสนอต่อไป&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-3674477468871997481?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PYCVghblCF0zkZ3UToErAWP24AA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PYCVghblCF0zkZ3UToErAWP24AA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PYCVghblCF0zkZ3UToErAWP24AA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PYCVghblCF0zkZ3UToErAWP24AA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/hBZo9SGsbbA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/3674477468871997481/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=3674477468871997481" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/3674477468871997481?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/3674477468871997481?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/hBZo9SGsbbA/impulse-discrete-pd.html" title="การสร้าง Impulse (Discrete) ใน pd เพื่อใช้ทดสอบตัวกรอง" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_d72Ndtf-05M/TVGb7_VDbJI/AAAAAAAAAGw/1nilWeSyXVU/s72-c/mydirac%257E.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2011/02/impulse-discrete-pd.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAGRXY6fip7ImA9WhZaEE0.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-3228863193760911989</id><published>2011-01-18T10:45:00.000-08:00</published><updated>2011-06-25T05:25:24.816-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-25T05:25:24.816-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Latex" /><category scheme="http://www.blogger.com/atom/ns#" term="thesis" /><title>การเขียนวิทยานิพนธ์ ม.ข. ด้วย LaTeX - สร้างสารบัญ</title><content type="html">ข้อกำหนดหนึ่งของวิทยานิพนธ์บัณฑิตศึกษา มหาวิทยาลัยขอนแก่นคือสารบัญ &lt;br /&gt;
ข้อกำหนดคือ&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;สารบัญ และส่วนประกอบอื่น ๆ เช่น กิตติกรรมประกาศ มีศักดิ์ศรีเทียบเท่าบท ดังนั้นหัวข้อของสารบัญจึงใช้หัวข้อของบท แต่ไม่ต้องมีเลขบท คือเป็นตัวอักษรแบบตัวหนาขนาด 18 พอยต์ (Bold 18 points) อยู่กึ่งกลางหน้ากระดาษ&lt;/li&gt;
&lt;li&gt;หากสารบัญมีมากกว่าหนึ่งหน้า หน้าต่อ ๆ ไปของสารบัญจะต้องขึ้นหัวข้อว่า "สารบัญ (ต่อ)" ด้วยอักษรตัวหนาขนาด 18 พอยต์เช่นเดียวกัน (ข้อนี้ไม่มีคำสั่งเป็นลายลักษณ์อักษร แต่ตัวอย่างที่มีให้เป็นแบบนี้ และวิทยานิพนธ์ทุก ๆ เล่มที่ผมเข้าถึงได้ ก็เป็นแบบนี้)&lt;/li&gt;
&lt;li&gt;เนื้อสารบัญควรบอก บทที่ ชื่อบท และเลขหน้าของบทนั้น ๆ เริ่มตั้งแต่บทคัดย่อ จนไปจบที่ประวัติผู้เขียนเป็นรายการสุดท้าย ใช้อักษรแบบธรรมดาขนาด 14 พอยต์ (Normal 14 points)&lt;/li&gt;
&lt;li&gt;หัวข้อย่อยของแต่ละบทนั้น แสดงลึกไม่เกิน 1 ระดับ คือสารบัญจะแสดงรายละเอียดถึง 1.1 หมายถึง บทที่ 1 หัวข้อที่ 1 เท่านั้น จะไม่แสดงรายละเอียดถึง 1.1.1&lt;/li&gt;
&lt;li&gt;หัวข้อย่อยควรจัดให้ตรงกับบท (ไม่บังคับ แต่ตัวอย่างเป็นแบบนี้) &lt;/li&gt;
&lt;li&gt;เลขลำดับของหัวข้อย่อย จะมีหรือไม่มีก็ได้&lt;/li&gt;
&lt;li&gt;ระยะห่างระหว่างชื่อบท หรือหัวข้อสารบัญ ถึงบรรทัดแรกของสารบัญ ให้เว้น 2 บรรทัด (ของอักษรขนาดกี่พอยต์?)&lt;/li&gt;
&lt;/ol&gt;ค้นไปค้นมา พบว่าไม่ต้องเขียนอะไรมาก เอา แพคเกจที่มีคนทำไว้แล้วมาใช้ก็ได้ แพคเกจที่หยิบมาใช้คือ titletoc ซึ่งติดตั้งมาพร้อมกับ titlesec ซึ่งอยู่ในแพคเกจเดเบียน texlive-latex-extra&lt;br /&gt;
&lt;br /&gt;
สิ่งที่ต้องใช้ใน preemble ก็คือ เรียกคลาสที่จำเป็นขึ้นมา&lt;br /&gt;
&lt;pre class="prettyprint"&gt;\RequirePackage{titletoc}
\RequirePackage{ifthen}
\RequirePackage{lineno}
&lt;/pre&gt;&lt;br /&gt;
ตั้งค่าความลึกของหน้าสารบัญใหม่เป็น 1 (คือลงลึกแค่ชั้นเดียว) และตั้งค่าคำสั่ง \tableofcontents ใหม่&lt;br /&gt;
&lt;pre class="prettyprint"&gt;\setcounter{tocdepth}{1}
\renewcommand\tableofcontents{%
% Header of the first page of the TOC
\chapter*{\contentsname\@mkboth{\MakeUppercase\contentsname}
{\MakeUppercase\contentsname}}%
\begin{flushright}
\textbf{หน้า}
\end{flushright}

% Counter for tocitem
\newcounter{tocitem}
\setcounter{tocitem}{0}

% Turn on the linenumber counts, but do not want to display it.
\modulolinenumbers[50]
\linenumbers[1]
\@starttoc{toc}%
\setcounter{tocitem}{0}
\clearpage
}
&lt;/pre&gt;&lt;br /&gt;
สร้างคำสั่งใหม่สำหรับตรวจสอบว่าบรรทัดปัจจุบัน หรือ จำนวนหัวข้อที่แสดงในสารบัญเกินค่าทึ่กำหนดหรือยัง หากเกินแล้วให้ตัดขึ้นหน้าใหม่ รีเซตตัวนับ tocitem รีเซตตัวนับบรรทัดใหม่ และเขียนหัวของหน้าสารบัญใหม่ (เช่น สารบัญ (ต่อ) ในกรณีนี้)&lt;br /&gt;
&lt;pre class="prettyprint"&gt;\newcommand{\tocheadcont}[3]{
\ifthenelse{#1&amp;gt;32 \OR #2&amp;gt;32}{
%Should be a newpage here.
\pagebreak[4]
\resetlinenumber[1]
\setcounter{tocitem}{0}
\begin{ċenter}
{\Large \textbf{#3 (ต่อ)} }
\end{center} 
\begin{flushright}
\textbf{หน้า}
\end{flushright}
}{}
}&lt;/pre&gt;&lt;br /&gt;
การจัดรายการสารบัญโดยใช้คำสั่ง \titlecontents จากแพคเกจ titletoc&lt;br /&gt;
&lt;pre class="prettyprint"&gt;% tocitem format for chapter
\titlecontents{chapter}[0mm]
{\stepcounter{tocitem}\tocheadcont{\thelinenumber}{\thetocitem}{สารบัญ}}
{\chaptername\hspace{1ex}\thecontentslabel\hspace{2mm}}
{}{\hfill \contentspage}

% tocitem format for section
\titlecontents{section}[0mm]
{\stepcounter{tocitem}\tocheadcont{\thelinenumber}{\thetocitem}{สารบัญ}}
{\hspace{\firstindentlength}\thecontentslabel\hspace{2mm}}{\hspace{\firstindentlength}\thecontentslabel\hspace{2mm}}
{\hfill \contentspage}
&lt;/pre&gt;&lt;br /&gt;
ผลลัพธ์ที่ได้แสดงในรูป&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_d72Ndtf-05M/TTXcoPTSqhI/AAAAAAAAAGI/yPQmxd3TSYY/s1600/toc-009.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="246" src="http://2.bp.blogspot.com/_d72Ndtf-05M/TTXcoPTSqhI/AAAAAAAAAGI/yPQmxd3TSYY/s400/toc-009.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_d72Ndtf-05M/TTXcoR7Og0I/AAAAAAAAAGQ/ISFJBfyKOHc/s1600/toc-010.png" imageanchor="1"&gt;&lt;img border="0" height="168" src="http://3.bp.blogspot.com/_d72Ndtf-05M/TTXcoR7Og0I/AAAAAAAAAGQ/ISFJBfyKOHc/s400/toc-010.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;กล่าวโดยสรุปเราใช้&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;\titlecontents จากแพคเกจ titletoc เพื่อจัดรูปแบบของรายการสารบัญ&lt;/li&gt;
&lt;li&gt;\thelinenumber จากแพคเกจ lineno เพื่อนับบรรทัดในหน้า &lt;/li&gt;
&lt;li&gt;\newcounter{tocitem} สร้างตัวนับรายการสารบัญ&lt;/li&gt;
&lt;li&gt;\ifthenelse จากแพคเกจ ifthen เพื่อตรวจเงื่อนไข&lt;/li&gt;
&lt;/ul&gt;อันที่จริงเราอาจใช้ทางอื่นในการสร้างหัวสารบัญในหน้าถัดไปได้ เช่นเอาหัวสารบัญไปใส่ในส่วนหัวของหน้าแล้วจัด Margin ใหม่ก็ได้ แต่ผมไม่ได้คิดถึงทางออกนี้จนกระทั่งแก้ปัญหามาทางนี้เกือบเสร็จแล้ว หากใครมีทางเลือกอื่น ๆ เพื่อจัดหน้าสารบัญสำหรับวิทยานิพนธ์ ม.ข. ก็จะขอแบ่งประสบการณ์ด้วยครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-3228863193760911989?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GcCLmx9BRd-nRk1pyNW1a8j_xDA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GcCLmx9BRd-nRk1pyNW1a8j_xDA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GcCLmx9BRd-nRk1pyNW1a8j_xDA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GcCLmx9BRd-nRk1pyNW1a8j_xDA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/m89y-lb_h6Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/3228863193760911989/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=3228863193760911989" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/3228863193760911989?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/3228863193760911989?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/m89y-lb_h6Y/latex.html" title="การเขียนวิทยานิพนธ์ ม.ข. ด้วย LaTeX - สร้างสารบัญ" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_d72Ndtf-05M/TTXcoPTSqhI/AAAAAAAAAGI/yPQmxd3TSYY/s72-c/toc-009.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2011/01/latex.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEBRXszeCp7ImA9Wx9REUU.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-2720271189024673643</id><published>2010-12-12T11:01:00.000-08:00</published><updated>2010-12-12T11:04:14.580-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-12T11:04:14.580-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Network" /><category scheme="http://www.blogger.com/atom/ns#" term="Debian" /><category scheme="http://www.blogger.com/atom/ns#" term="Internet" /><title>3BB กับ Debain</title><content type="html">วันนี้ติดตั้ง 3BB ที่บ้านเรียบร้อย บริการรวดเร็วทันใจ ผู้รับเหมาที่มาติดตั้งก็นิสัยดีมาก คือทำงานไม่ชุ่ยและแสดงให้เห็นว่าพยายามจะให้ผลงานออกมาเรียบร้อยถูกใจลูกค้า&lt;br /&gt;
&lt;br /&gt;
สมัครเมื่อวาน ติดตั้งเสร็จวันนี้ เร็วทันใจดีจริง&lt;br /&gt;
&lt;br /&gt;
แต่เอ...คู่มือที่ให้มามีแต่สำหรับ Window นะนี่ อ่ะ ไม่เป็นไรระบบพอจะคุ้น ๆ อยู่&lt;br /&gt;
&lt;br /&gt;
ระบบที่เขามาติดตั้งให้จะมีลักษณะอย่างนี้ครับ คือช่างเขาจะพ่วงสายทองแดงจากจุดเชื่อมต่อนอกบ้านเข้ามาในบ้าน พอเข้ามาในบ้านแล้วก็จะเป็นเส้นเล็ก ๆ คล้าย ๆ สายโทรศัพท์ (ผมว่ามันคือสายโทรศัพท์จริง ๆ นั่นแหละ เส้นหนึ่งแดง เส้นหนึ่งเขียว) จากสายโทรศัพท์จะต่อเข้ากล่องดำ ๆ กล่องหนึ่ง ช่างบอกว่าเรียกว่าเราเตอร์ จากเราเตอร์จะมีสายแลนต่อออกมาจากเราเตอร์เข้ามาที่การ์ดเน็ตเวิร์ก หรือการ์ดแลนของเรา ซึ่งเรามีการ์ดเดียวคือ eth0 แน่นอน&lt;br /&gt;
&lt;br /&gt;
ดังนั้นใช้ ifconfig ปลุก eth0 ให้ตื่นซะก่อน แปลงร่างเป็นผู้มีอภิสิทธิ์ในระบบซะแล้วก็&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; ifconfig eth0 up&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;หลังจากนั้น ก็ให้ DHCP ของ 3BB (หรือว่าของเราเตอร์ก็ไม่รู้ล่ะ) กำหนด IP ให้เรา&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; dhclient eth0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: inherit;"&gt;ตอนนี้ควรจะใช้การได้แล้ว จะลอง ping ลอง host ดูว่าเชื่อมต่อกับเน็ตเวิร์กแล้วหรือยังก็ได้เช่น&lt;/div&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; host google.com&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: inherit;"&gt;ถ้าแสดง IP ของ google.com มาได้ก็แสดงว่าใช้ได้แล้ว เคยถามที่จุดให้บริการเรื่อง proxy เขาว่าไม่ต้องใช้ ก็ให้เอา proxy ของ browser ออกซะ แล้วก็ลองใช้อินเตอร์เนตดู&amp;nbsp; &amp;nbsp; &lt;/div&gt;&lt;br /&gt;
ทีนี้ล่ะ Debian ของผมมีปัญหา เข้าบางเว็บไม่ได้ แต่เครื่องของแฟนเข้าได้!!?? คิดไปคิดมา เฮ้ย เราเคยเจอปัญหาอย่างนี้มาหนหนึ่งแล้วนี่นา กับ True ของน้องชายไง สาเหตุอันเนื่องมาจาก DNS ที่เราใช้มันใช้ไม่ได้ หรือมันใช้ไม่ดี ยังไงก็ไม่ทราบ เอ้า! ลองเปลี่ยน DNS ดู&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; vi /etc/resolve.conf&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: inherit;"&gt;แล้วแก้ไข nameserver ให้เป็นค่าอื่นที่เราคิดว่าใช้ได้ เช่น DNS ของ กูเกิลเป็นต้น&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;อย่างไรก็ตามผมก็ยังอยากรู้เหมือนกันว่า&amp;nbsp; DNS ของ 3BB ที่ถูกต้อง ควรตั้งเป็นค่าไหนกันแน่ เพราะค้นจากเว็บ จาก FAQ จาก ฯลฯ ก็ไม่พบข้อมูลที่เป็นทางการสักที ก็ต้องใช้ DNS ของกูเกิลไปก่อน หากมีใครทราบโปรดอนุเคราะห์ด้วยเถอะ ไหน ๆ ก็เสียเงินให้เขาไปแล้วอยากใช้ให้คุ้ม ไม่อยากไปใช้ที่อื่น&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;ป.ล. ผมเองก็จะถามไปที่ 3BB เหมือนกัน แต่ว่าไม่ค่อยแน่ใจว่าเขาจะเข้าใจคำถามของผมหรือเปล่าน่ะสิ เขาอาจจะถามกลับมาเรียบ ๆ ก็ได้ว่า ก็แล้วทำไมพี่ไม่ใช้ Window ล่ะ (ไม่ฮา)&amp;nbsp; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-2720271189024673643?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uoSa1PGT8nUZBKzN3tkTD_hI-B4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uoSa1PGT8nUZBKzN3tkTD_hI-B4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uoSa1PGT8nUZBKzN3tkTD_hI-B4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uoSa1PGT8nUZBKzN3tkTD_hI-B4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/6FgxhDENlWc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/2720271189024673643/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=2720271189024673643" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/2720271189024673643?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/2720271189024673643?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/6FgxhDENlWc/3bb-debain.html" title="3BB กับ Debain" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2010/12/3bb-debain.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4DQX44fCp7ImA9Wx5aEk8.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-3663029387215358370</id><published>2010-11-08T06:36:00.000-08:00</published><updated>2010-11-08T06:36:10.034-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-08T06:36:10.034-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Debian" /><title>กลับมาแล้ว แต่กว่าจะกลับมาได้ เฮ้อ...</title><content type="html">คอมพิวเตอร์คู่ใจพังไปได้ 2 เดือนแล้ว...ก็เป็นคอมพ์เครื่องนี้แหละครับ ที่ลง Debian ไว้ ใช้เขียนเอกสารประกอบการสอนในวิชาคณิตศาสตร์วิศวกรรม 4 (สมการอนุพันธ์) และวิชากรรมวิธีเชิงตัวเลข โดยใช้ Beamer และใช้ทำงานอดิเรกบน Linux ต่าง ๆ ที่เอามาเขียนลงบล๊อก&lt;br /&gt;
&lt;br /&gt;
ดังนั้นเมื่อคอมพ์เครื่องนี้หมดเวลาของมันลงไป ผมก็ห่างหายไปจากงานอดิเรกต่าง ๆ บน Linux&lt;br /&gt;
&lt;br /&gt;
ตอนนี้เพิ่งจะได้เครื่องเก่าของน้องชายมาใช้ ก็ติดตั้ง Debian เสร็จไปเมื่อสุดสัปดาห์ที่ผ่านมา เป็นการติดตั้ง Debian ที่อาจพอจะเปรียบเทียบได้กับการลุยป่าด้วยมีดพับเล่มเดียวก็ได้มั้ง คือสำหรับคนอ่อนหัดอย่างผม เส้นทางนี้ก็ถือว่าโหดเหมือนกัน คงไม่โอเวอร์ไปหรอก ฮิ ฮิ&lt;br /&gt;
&lt;br /&gt;
กล่าวคือ ติดตั้งจาก CD No. 1 ของ Debian โดยที่เครื่องไม่ได้ต่ออินเตอร์เนตไว้ครับ อันที่จริงในเว๊บเขาก็ว่ามันทำได้ไม่น่าจะยากนะ แต่พอผมติดตั้งเสร็จ ตัวเลือกตอนติดตั้งนั้นมีเพียงตัวเลือกเดียวที่บังคับให้เลือกเลยคือ Base System ซึ่งไม่มี X ไม่มี Gnome&lt;br /&gt;
&lt;br /&gt;
พอติดตั้งเสร็จก็...เอาล่ะซิ เราไม่ได้คุ้นเคยกับ Command Line เสียด้วย ทำไงดี!&lt;br /&gt;
&lt;br /&gt;
ปรากฏว่าพอพยายามลองรัน apt-get ดู เหมือน ๆ มันจะเรียกอ่าน CD แฮะ เลยเอา CD ใส่เข้าไปแล้วลองติดตั้ง gnome ดู ปรากฏว่ายังใช้ไม่ได้ คิดว่าสาเหตุเป็นเพราะผมเรียกชื่อแพคเกจไม่ถูก จำชื่อ แพคเกจที่จำเป็นไม่ได้&lt;br /&gt;
&lt;br /&gt;
งั้นเอาใหม่ ใช้ apt-get ไม่ได้ ใช้ aptitude ก็ได้ (ฟะ) ตัว aptitude ก็ช่วยได้คือมันจะแสดงรายการ แพคเกจต่าง ๆ ให้ เราก็เลือกหลัก ๆ ก็มี gnome นี่แหละ แล้วก็เช็คให้มั่นใจว่าได้เลือกให้ติดตั้ง gdm3 เรียบร้อยแล้วหรือยัง ถ้ายังต้องเลือกด้วย เพราะตัวนี้จะพาเราเข้ามาใน gnome ได้&lt;br /&gt;
&lt;br /&gt;
เมื่อติดตั้ง gnome จาก CD ได้ ต่อไปก็ลองพยายามติดตั้ง wvdial ดู ปรากฏว่าใน CD#1 ไม่มี wvdial ต้องใช้เครื่องแฟน โหลด .deb ใส่ usb-drive มา พร้อมกับแพคเกจอื่น ๆ ที่เว็บ Debian ระบุว่าจำเป็น แล้วเราเช็คจาก aptitude ของเราแล้วไม่มีอยู่เดิม ใช้ dpkg ติดตั้ง wvdial ให้ได้&lt;br /&gt;
&lt;br /&gt;
พอติดตั้ง wvdial ได้แล้วค่อยใช้ wvdial ติดต่อกับอินเตอร์เนต แล้วใช้ apt-get (หรือ aptitude) ก็แล้วแต่ ติดตั้งแพคเกจอื่น ๆ ที่เห็นว่าจำเป็น ในกรณีของผมซึ่งต่ออินเตอร์เนตด้วย GPRS ของ Nokia 31 Classic ได้ความเร็วดาวน์โหลดไม่เกิน 24 kbps นี้ใช้เวลาดาวน์โหลดแพคเกจที่ผมคิดว่าจำเป็นรวมทั้งสิ้นประมาณ 14 ชั่วโมง!&lt;br /&gt;
&lt;br /&gt;
บัดนี้เครื่องพร้อมใช้งานแล้ว งานอดิเรกที่คั่งค้างไว้ทั้งหลายทั้งปวงก็จะได้เวลาสะสางกันเสียที&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-3663029387215358370?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/D3EVXDx9EM1ZejWAays6lWwpFg8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D3EVXDx9EM1ZejWAays6lWwpFg8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/D3EVXDx9EM1ZejWAays6lWwpFg8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D3EVXDx9EM1ZejWAays6lWwpFg8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/aE7WicmzGDA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/3663029387215358370/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=3663029387215358370" title="1 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/3663029387215358370?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/3663029387215358370?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/aE7WicmzGDA/blog-post.html" title="กลับมาแล้ว แต่กว่าจะกลับมาได้ เฮ้อ..." /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2010/11/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEMDSHo4cSp7ImA9Wx5QEkg.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-6060906835921029525</id><published>2010-08-31T04:51:00.000-07:00</published><updated>2010-08-31T05:07:59.439-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-31T05:07:59.439-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Latex" /><title>การเขียนบันทึกข้อความ (หนังสือราชการภายใน) โดยใช้ Latex (เพิ่มเติม)</title><content type="html">&lt;a href="http://kt-linux.blogspot.com/2010/08/latex.html"&gt;คราวที่แล้ว&lt;/a&gt;เขียนคลาสขึ้นมา (อันที่จริงก็เรียกแพคเกจหลายแพคเกจมาช่วย) สำหรับบันทึกข้อความ พบข้อบกพร่องดังนี้&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;ผมใช้คำสั่ง \tabular สำหรับส่วนหัวของบันทึกข้อความ ทำให้หาก "เรื่อง" หรือ "เรียน" ซึ่งอยู่คอลัมน์ที่หนึ่งมีความยาวมาก เบอร์โทรศัพท์ของหน่วยงาน และวันที่ จะตกขอบขวา เพราะมันอยู่คอลัมน์ที่สองทั้งคู่&lt;/li&gt;
&lt;li&gt;คราวที่แล้ว ผมลืมสร้างคำสั่งสำหรับเขียนคำลงท้ายลงตำแหน่งที่เหมาะสม เช่น ด้วยความนับถือ เป็นต้น&lt;/li&gt;
&lt;li&gt;การทำบันทึกข้อความข้ามหน่วยงานภายในที่ถูกต้อง จะต้องให้หัวหน้าหน่วยงานรับทราบด้วยทุกครั้ง โดยการ เรียน [ใครก็แล้วแต่ที่อยู่นอกหน่วยงาน] ผ่าน [หัวหน้าหน่วยงานของท่าน] ซึ่งหัวหน้าหน่วยงานจะต้องลงนามรับทราบด้วย ในคลาสเดิมมันไม่มีคำสั่งสำหรับการนี้&lt;/li&gt;
&lt;/ol&gt;&lt;u&gt;&lt;b&gt;ปัญหาที่ส่วนหัวของจดหมาย&lt;/b&gt;&lt;/u&gt; &lt;br /&gt;
ปัญหาแรก แก้ได้โดยใช้แพคแกจ multirow ซึ่งเรียกใช้โดยเพิ่ม&lt;br /&gt;
&lt;blockquote&gt;&amp;nbsp;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;\RequirePackage{multirow}&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family: inherit;"&gt;เข้าไปในคลาส แล้วแก้ไขคำสั่ง \opening เป็น&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;\newcommand{\openning}{%&lt;br /&gt;
\noindent \parbox{0.2\textwidth}{\raggedright{\includegraphics[width=20mm]{Tra-Khrut.eps}}} \hfill {\Large\bf บันทึกข้อความ} \hfill \parbox{0.2\textwidth}{\qquad}&lt;br /&gt;
\begin{tabular}{@{}ll}&lt;br /&gt;
{\bfส่วนราชการ} \@officeunit &amp;amp; {\bf โทร.} \@telephonenum \\&lt;br /&gt;
{\bfที่} \@unitid / \@memoreg &amp;amp; \@date \\&lt;br /&gt;
\multicolumn{2}{@{}l}{{\bfเรื่อง} \@title} \\&lt;br /&gt;
\multicolumn{2}{@{}l}{{\bfเรียน} \@letterto}&lt;br /&gt;
\end{tabular} % เว้นหนึ่งบรรทัดข้างล่างนี้ห้ามลบ&lt;br /&gt;
&lt;br /&gt;
}&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;โปรดสังเกตคำสั่ง \multicolumn{2}{@{}l}{ข้อความที่จะใส่ในตาราง} ที่บรรทัดที่ 4 และ 5 จากบรรทัดสุดท้าย เลข 2 หมายถึงข้อความนี้อยู่ใน 2 คอลัมน์ พารามิเตอร์ {@{}l} หมายถึงชิดซ้ายโดยไม่เว้นขอบตาราง&lt;br /&gt;
&lt;br /&gt;
ในโอกาสต่อไป หากทราบชัดเจนว่าหมายเลขโทรศัพท์และวันที่ควรอยู่ตำแหน่งใด ก็สามารถกำหนดได้โดยกำหนดความกว้างของตารางได้ทันที&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;ปัญหาเรื่องคำลงท้าย&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
ก็เพิ่มคำสั่งเข้ามาเลย เหมือนคำสั่งอื่น ๆ คือสร้างคำสั่งเพื่อรับคำลงท้ายจากเอกสาร tex เข้ามา&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;\newcommand*{\closingphrase}[1]{\def\@closingphrase{#1}}&lt;/span&gt; &lt;/blockquote&gt;แล้วก็กำหนดตำแหน่งให้เขียนในตำแหน่งที่ตรงกับการลงนามท้ายหนังสือ&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;\newcommand{\closing}{%&lt;br /&gt;
\vskip 0.5em&lt;br /&gt;
\parbox{0.3\textwidth}{\qquad}\parbox{0.7\textwidth}{\centering \@closingphrase}&lt;br /&gt;
}&lt;/span&gt;&lt;/blockquote&gt;ในอนาคต อาจเก็บตัวเลข 0.3 0.7 ที่เห็นข้างบนนี้ เป็นตัวแปร แล้วกำหนดค่าตัวแปรทีเดียวที่ต้นคลาสเลยก็น่าจะทำได้&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;ปัญหาที่การลงนามของหัวหน้าหน่วยงาน&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
เพิ่มคำสั่งเพื่อรับชื่อและตำแหน่งของหัวหน้าหน่วยงานโดย&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;\newcommand*{\approvalperson}[1]{\def\@approvalperson{#1}}&lt;/span&gt;&lt;/blockquote&gt;แล้วนำไปเขียนใต้ชื่อผู้ลงนามเอกสาร ให้ตำแหน่งตรงกันกับผู้ลงนาม เหมือนกับคำลงท้าย&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;\newcommand{\approvalsigned}{%&lt;br /&gt;
\vskip 3em&lt;br /&gt;
\parbox{0.3\textwidth}{\qquad}\parbox{0.7\textwidth}{\centering \@approvalperson}&lt;br /&gt;
}&lt;/span&gt;&lt;/blockquote&gt;ในส่วนของหัวหน้าหน่วยงานนี้เป็นตัวเลือก ถ้าไม่เรียกคำสั่ง \approvalsigned ก็ไม่มีอะไรเกิดขึ้น&lt;br /&gt;
&lt;br /&gt;
ท่านสามารถดาวน์โหลดแฟ้มข้อมูลของคลาสที่ปรับปรุงแล้ว พร้อมตัวอย่างการใช้งาน ได้จาก&lt;a href="http://sites.google.com/site/mkittiphong/my_life_with_linux/MyLatexClasses/internalmemo"&gt;ห้องทำงาน&lt;/a&gt;ของผมครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-6060906835921029525?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/n0c4_mK-cKNOFSONX-zbvnQ1LUo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n0c4_mK-cKNOFSONX-zbvnQ1LUo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/n0c4_mK-cKNOFSONX-zbvnQ1LUo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n0c4_mK-cKNOFSONX-zbvnQ1LUo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/HgqUDdurVAs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/6060906835921029525/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=6060906835921029525" title="2 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/6060906835921029525?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/6060906835921029525?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/HgqUDdurVAs/latex_31.html" title="การเขียนบันทึกข้อความ (หนังสือราชการภายใน) โดยใช้ Latex (เพิ่มเติม)" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2010/08/latex_31.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8AQ3o_fip7ImA9Wx5SGE0.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-6387461289914280738</id><published>2010-08-14T10:07:00.000-07:00</published><updated>2010-08-14T10:44:02.446-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-14T10:44:02.446-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Latex" /><title>การเขียนบันทึกข้อความ (หนังสือราชการภายใน) โดยใช้ Latex</title><content type="html">จากเดิมที่เคยทดลองใช้ fig2sty ไปเมื่อ&lt;a href="http://kt-linux.blogspot.com/2010/06/latex.html"&gt;คราวก่อน&lt;/a&gt; พบว่าอาจเป็นปัญหาสำหรับคนที่ไม่ได้ใช้ xfig เป็นปรกติ (และอันที่จริง ก็ยังทำในส่วนของการลงนามไม่เสร็จด้วย) นอกจากนี้ ด้วยความที่ยังไม่เข้าใจระบบ margin ของเอกสารก็ทำให้ต้องทำ hardcode ในส่วนของการจัดตำแหน่งด้วย ซึ่งไม่น่าจะเป็นวิธีที่ดีเท่าไร&lt;br /&gt;
&lt;br /&gt;
หลังจากได้อ่านเอกสารเกี่ยวกับการเขียน Latex Class ไปเมื่อ&lt;a href="http://kt-linux.blogspot.com/2010/08/template-latex.html"&gt;คราวที่แล้ว&lt;/a&gt; เมื่อย้อนกลับมาดูปัญหาเดิม คือการเขียนบันทึกข้อความ (หนังสือภายใน) ก็พบว่าสามารถใช้ความรู้นั้นมาดัดแปลงได้ และแนวทางการแก้ปัญหาก็จะเป็นกรณีทั่วไปมากกว่า โดยเฉพาะไม่ต้องมีการลง hardcode ในเรื่องของตำแหน่งข้อความ (มากนัก)&lt;br /&gt;
&lt;br /&gt;
สิ่งที่ต้องใช้ก็มี&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;การกำหนดตำแหน่งของส่วนหัวของบันทึกข้อความ ทำได้โดยคำสั่ง \parbox&lt;/li&gt;
&lt;li&gt;การรับค่าต่าง ๆ เช่น เรื่อง เรียน ฯลฯ จากบันทึกข้อความมาสร้างส่วนหัว ทำได้โดยการสร้างคำสั่งใหม่&lt;/li&gt;
&lt;li&gt;การใส่ภาพครุฑลงในเอกสาร ทำได้โดยใช้แพคเกจ graphicx&lt;/li&gt;
&lt;li&gt;หากไม่ได้กำหนดไว้เป็นอย่างอื่น ให้ใช้ค่าปริยายของคลาส article ทั้งหมด&lt;/li&gt;
&lt;/ul&gt;ทำให้ได้แฟ้มคลาสดังต่อไปนี้&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;%---------------------------------------- &lt;/span&gt;&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;% officialmemoth.cls&lt;br /&gt;
% Official Internal Memo&lt;br /&gt;
% 2010-Aug-14 Kittiphong Meesawat ktphong (at) elec.kku.ac.th&lt;br /&gt;
&lt;br /&gt;
% --- Class structure: identification part&lt;br /&gt;
% ---&lt;br /&gt;
\NeedsTeXFormat{LaTeX2e}&lt;br /&gt;
\ProvidesClass{officialmemoth}[2010/08/14 version 0.1 Official Internal Memo]&lt;br /&gt;
&lt;br /&gt;
&lt;div style="color: red;"&gt;% Package ที่เรียกใช้งาน&lt;/div&gt;\LoadClass[12pt,a4paper]{article}&lt;br /&gt;
\RequirePackage[left=25mm,right=25mm,top=25mm,bottom=25mm]{geometry}&lt;br /&gt;
\RequirePackage{graphicx}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: red;"&gt;% ตั้งค่า ย่อหน้า (Indent) ค่าขึ้นย่อหน้าใหม่ (Indentskip) และไม่ให้มีเลขหน้า &lt;/span&gt;(pagestyle)&lt;br /&gt;
\setlength{\parindent}{3em}&lt;br /&gt;
\setlength{\parskip}{1.5em}&lt;br /&gt;
\pagestyle{empty}&lt;br /&gt;
&lt;br /&gt;
&lt;div style="color: red;"&gt;% คำสั่งเพื่อรับค่าต่าง ๆ ของบันทึกข้อความ&lt;/div&gt;\newcommand*{\officeunit}[1]{\def\@officeunit{#1}}&lt;br /&gt;
\newcommand*{\unitid}[1]{\def\@unitid{#1}}&lt;br /&gt;
\newcommand*{\telephonenum}[1]{\def\@telephonenum{#1}}&lt;br /&gt;
\newcommand*{\memoreg}[1]{\def\@memoreg{#1}}&lt;br /&gt;
\newcommand*{\letterto}[1]{\def\@letterto{#1}}&lt;br /&gt;
&lt;br /&gt;
&lt;div style="color: red;"&gt;% คำสั่ง \openning เพื่อสร้างส่วนหัวของบันทึกข้อความ&lt;/div&gt;&lt;div style="color: red;"&gt;% ตำแหน่งต่าง ๆ เปลี่ยนแปลงได้ ถ้าทราบว่ามีข้อกำหนดตายตัวไว้อย่างไร&lt;/div&gt;\newcommand{\openning}{%&lt;br /&gt;
\noindent \parbox{0.2\textwidth}{\raggedright{\includegraphics[width=20mm]{Tra-Khrut.eps}}} \hfill {\Large\bf บันทึกข้อความ} \hfill \parbox{0.2\textwidth}{\qquad}&lt;br /&gt;
\begin{tabular}{@{}ll}&lt;br /&gt;
{\bfส่วนราชการ} \@officeunit &amp;amp; {\bf โทร.} \@telephonenum \\&lt;br /&gt;
{\bfที่} \@unitid / \@memoreg &amp;amp; \@date \\&lt;br /&gt;
{\bfเรื่อง} \@title &amp;amp; \\&lt;br /&gt;
{\bfเรียน} \@letterto &amp;amp; &lt;br /&gt;
\end{tabular} % เว้นหนึ่งบรรทัดข้างล่างนี้ห้ามลบ&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;div style="color: red;"&gt;% คำสั่ง \undersigned เพื่อสร้างที่สำหรับเซ็นชื่อของผู้เขียนบันทึกข้อความ&lt;/div&gt;&lt;div style="color: red;"&gt;% ตำแหน่งต่าง ๆ เปลี่ยนแปลงได้ ถ้าทราบว่ามีข้อกำหนดตายตัวไว้อย่างไร&lt;/div&gt;\newcommand{\undersigned}{%&lt;br /&gt;
\vskip 3em&lt;br /&gt;
\parbox{0.3\textwidth}{\qquad}\parbox{0.7\textwidth}{\centering \@author}&lt;br /&gt;
}&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;%----------------------------------------&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-family: inherit;"&gt;เวลาใช้งานในแฟ้มเอกสาร Latex &lt;/span&gt;ก็เรียกใช้ class officialmemoth ดังนี้&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;%----------------------------------------&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;\documentclass[12pt,a4paper]{officialmemoth}&lt;br /&gt;
\usepackage[thai]{babel}&lt;br /&gt;
\usepackage{thswitch}&lt;br /&gt;
&lt;span style="color: red;"&gt;% ใช้แบบอักษรกินรี ซึ่งเชื่อว่าคล้าย อังศณา มากที่สุด (ทำไมต้องเป็นอังศณาด้วยนะ?)&lt;/span&gt;&lt;br /&gt;
\usefont{LTH}{kinnari}{m}{n}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: red;"&gt;% ชื่อเรื่องหนังสือ&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: red;"&gt;% ชื่อหน่วยงาน&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: red;"&gt;% รหัสหน่วยงาน&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: red;"&gt;% หมายเลขโทรศัพท์หน่วยงาน&lt;/span&gt;&lt;br /&gt;
\title{ทดสอบบันทึกข้อความ}&lt;br /&gt;
\officeunit{คณะวิศวกรรมศาสตร์ ภาควิชาวิศวกรรมไฟฟ้า}&lt;br /&gt;
\unitid{{\bf ศธ} 0514.4.1.4}&lt;br /&gt;
\telephonenum{12142 -- 44 ต่อ 712}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: red;"&gt;% เลขส่งหนังสือ (ปรกติมักเว้นว่างไว้ นอกเสียจากเราจะทราบเลขแน่นอน)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: red;"&gt;% วันที่ออกหนังสือ&lt;/span&gt;&lt;br /&gt;
\memoreg{}&lt;br /&gt;
\date{วันที่ 14 สิงหาคม 2553}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: red;"&gt;% ผู้รับหนังสือ และ&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: red;"&gt;% ผู้เขียนหนังสือ (พร้อมตำแหน่ง โดยขึ้นบรรทัดใหม่ ถ้ามี)&lt;/span&gt;&lt;br /&gt;
\letterto{หัวหน้าภาควิชาวิศวกรรมไฟฟ้า}&lt;br /&gt;
\author{นายกิตติพงษ์ มีสวาสดิ์ \\ อาจารย์ประจำภาควิชาวิศวกรรมไฟฟ้า}&lt;br /&gt;
&lt;br /&gt;
\begin{document}&lt;br /&gt;
&lt;span style="color: red;"&gt;% คำสั่ง \openning จะทำการสร้างส่วนหัวของบันทึกข้อความขึ้นมา&lt;/span&gt;&lt;br /&gt;
\openning&lt;br /&gt;
ทดสอบหัวกระดาษ ทดสอบหัวกระดาษ ทดสอบย่อหน้าและหัวกระดาษ ทดสอบหัวกระดาษและย่อหน้า ทดสอบย่อหน้า ทดสอบหัวกระดาษ ทดสอบหัวกระดาษ ทดสอบย่อหน้าและหัวกระดาษ ทดสอบหัวกระดาษและย่อหน้า ทดสอบย่อหน้า ทดสอบหัวกระดาษ ทดสอบหัวกระดาษ ทดสอบย่อหน้าและหัวกระดาษ ทดสอบหัวกระดาษและย่อหน้า ทดสอบย่อหน้า&lt;br /&gt;
&lt;br /&gt;
ทดสอบหัวกระดาษ ทดสอบหัวกระดาษ ทดสอบย่อหน้าและหัวกระดาษ ทดสอบหัวกระดาษและย่อหน้า ทดสอบย่อหน้า ทดสอบหัวกระดาษ ทดสอบหัวกระดาษ ทดสอบย่อหน้าและหัวกระดาษ ทดสอบหัวกระดาษและย่อหน้า ทดสอบย่อหน้า ทดสอบหัวกระดาษ ทดสอบหัวกระดาษ ทดสอบย่อหน้าและหัวกระดาษ ทดสอบหัวกระดาษและย่อหน้า ทดสอบย่อหน้า&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: red;"&gt;% คำสั่ง \undersigned จะทำการเขียนชื่อผู้เขียนบันทึก และตำแหน่ง (ถ้ามี)&lt;/span&gt;&lt;br /&gt;
\undersigned&lt;br /&gt;
\end{document}&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;%----------------------------------------&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;และผลที่ได้จะมีหน้าตาแบบนี้&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_d72Ndtf-05M/TGbR8dE5xSI/AAAAAAAAAFc/0eG36EofJ4g/s1600/result.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="449" src="http://3.bp.blogspot.com/_d72Ndtf-05M/TGbR8dE5xSI/AAAAAAAAAFc/0eG36EofJ4g/s640/result.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
สิ่งที่ยังเป็นปัญหาอยู่ มีอยู่ 2 - 3 ประการด้วยกันคือ&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;ผมไม่ทราบว่าตำแหน่งต่าง ๆ ในส่วนหัวของบันทึกข้อความ มีระบุไว้แน่นอนชัดเจนหรือไม่ เท่าที่เห็นใช้ Word Processor เขียนกัน ก็ใช้ Tab กะ ๆ เอา ตอนนี้เลยใช้ tabular environment ซึ่งทำให้ "วันที่" กับ "โทร." นั้นตรงกัน ถ้าไม่มีข้อเสนอแนะเป็นอย่างอื่น ก็จะคงไว้อย่างนี้&lt;/li&gt;
&lt;li&gt;ผมไม่ทราบว่าตำแหน่งของการลงชื่อท้ายบันทึกข้อความ มีระบุไว้แน่นอนชัดเจนหรือไม่ เท่าที่เห็นใช้ Word Processor เขียนกัน ก็ใช้ Tab กะ ๆ เอา ตอนนี้เลยใช้ parbox ช่วยกันพื้นที่ไว้ ถ้าไม่มีข้อเสนอแนะเป็นอย่างอื่น ก็จะคงไว้อย่างนี้&lt;/li&gt;
&lt;li&gt;รูปครุฑที่ใช้ เป็นรูปจาก &lt;a href="http://th.wikipedia.org/wiki/%E0%B9%84%E0%B8%9F%E0%B8%A5%E0%B9%8C:Tra-Khrut.gif"&gt;wikipedia&lt;/a&gt; ซึ่งมีข้อความอธิบายว่า กฏหมายกำหนดไว้ว่า ตราครุฑ เป็นผลงานอันไม่มีลิขสิทธิ์ เนื่องจากเป็นส่วนประกอบของ ระเบียบ ข้อบังคับ คำสั่ง ฯลฯ ของราชการ แต่ถ้าผมทราบว่าใครเป็นผู้สร้างรูปนี้ขึ้นมาก็คงจะดีกว่านี้&lt;/li&gt;
&lt;li&gt;ในระบบของผม (ใช้ debain/lenny) อยู่ ไม่สามารถใช้ latex กับ UTF8 ได้ ดังนั้นแฟ้มทั้งหมดที่สร้างขึ้นนี้ จึงเป็น TIS-620 ทั้งหมด แต่สำหรับท่านที่ต้องการนำไปใช้ หากคัดลอกจากเว็บ ก็สามารถใช้ UTF8 ได้ทันทีโดยเติม \usepackage[utf8]{inputenc} ไว้ที่ส่วน preemble ของเอกสาร ก็น่าจะได้&lt;/li&gt;
&lt;li&gt;ในระบบของผม ไม่สามารถใช้คำสั่ง \includegraphics กับ GIF ต้นฉบับได้ (ยังหาสาเหตุไม่ได้) จึงต้องแปลง GIF เป็น EPS แทน ซึ่งการทำเช่นนี้มีจุดอ่อนคือ อาจใช้กับ pdflatex ซึ่งเป็นเครื่องมือหลักของ latex ในวินโดว์ ไม่ได้&lt;/li&gt;
&lt;li&gt;คนบางคนในหน่วยราชการบางหน่วย อาจไม่เข้าใจเรื่องแบบอักษร ทำให้ยึดติดอยู่กับแบบอักษรตระกูล Angsana หรือ Browallia หรืออื่น ๆ อันเป็นผลงานที่มีลิขสิทธิ์และมีราคา ไม่มีใช้ในระบบโอเพนซอร์ส และไม่ยอมรับแบบอักษรที่ทางรัฐบาลเป็นผู้สนับสนุนให้สร้างเอง เช่น กินรี นรสีห์ และอื่น ๆ ถ้าเป็นเช่นนี้ก็ช่วยไม่ได้จริง ๆ คงต้องทำใจอย่างเดียว&lt;/li&gt;
&lt;/ol&gt;หลังจากนี้จะรอรับคำชี้แนะเพื่อแก้ไขและปรับปรุงสัก 1 - 2 สัปดาห์ เมื่อแก้ไขและปรับปรุงแล้วจะนำแฟ้มเอกสารต่าง ๆ มาเผยแพร่ต่อไปครับ&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-6387461289914280738?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jXZwzFFyyt_JMMJQ7C-RED8LSOM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jXZwzFFyyt_JMMJQ7C-RED8LSOM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jXZwzFFyyt_JMMJQ7C-RED8LSOM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jXZwzFFyyt_JMMJQ7C-RED8LSOM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/ZU9Ej-n8nSI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/6387461289914280738/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=6387461289914280738" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/6387461289914280738?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/6387461289914280738?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/ZU9Ej-n8nSI/latex.html" title="การเขียนบันทึกข้อความ (หนังสือราชการภายใน) โดยใช้ Latex" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_d72Ndtf-05M/TGbR8dE5xSI/AAAAAAAAAFc/0eG36EofJ4g/s72-c/result.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2010/08/latex.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAMQX49eCp7ImA9Wx5QEE8.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-8247697604717930855</id><published>2010-08-13T01:00:00.000-07:00</published><updated>2010-08-28T13:19:40.060-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-28T13:19:40.060-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Latex" /><title>ประสบการณ์การสร้าง Template ของ Latex สำหรับการเขียนบทความวิจัย</title><content type="html">จากที่เป็นเพียงผู้ใช้ Latex มานาน ในที่สุดผมก็มีความต้องการออกแบบเอกสารใหม่มากเพียงพอที่จะก้าวข้ามระดับ "ขั้นต้น" ไปสู่ "ขั้นกลาง" ซึ่งก็คือการทำ Customize Latex และการสร้าง Class ไฟล์ ที่ผมใฝ่ฝันที่จะทำให้ได้มานานแล้วนั่นเอง&lt;br /&gt;
&lt;br /&gt;
สำหรับท่านที่ยังไม่ทราบขออธิบายตามความเข้าใจของผมเองสักนิดว่า Class File (xxx.cls) คืออะไร ในระดับที่ผมเข้าใจ Class File คือไฟล์ที่กำหนดพฤติกรรมของคำสั่งต่าง ๆ ของ Latex พฤติกรรมเหล่านี้อาจรวมถึง ขนาดกระดาษ กั้นหน้า กั้นหลัง แบบอักษร ฯลฯ หลายคนก็เรียก Class File ที่ทำหน้าที่เหล่านี้ว่า Template (แต่ผมคิดว่าไม่ใช่ชื่ออย่างเป็นทางการในวงการ Latex)&lt;br /&gt;
&lt;br /&gt;
บางคนก็อาจสงสัยว่า ที่ผมว่าผมใฝ่ฝันที่จะทำเป็นมานานนั้น ทำไมมันนานนัก? มันยากนักรึ? คำตอบคือมันก็ไม่ยาก แต่มันก็ไม่ง่ายครับ แต่ที่ทำไม่ได้สักทีเพราะ&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;แต่เดิมนั้นผมยึดติดกับ Syntax ของ Latex มากเกินไป พอมี Syntax แปลก ๆ เราก็ปิดกั้นสมองเลย ไม่พยายามทำความเข้าใจ&lt;/li&gt;
&lt;li&gt;อันที่จริงมันก็ไม่ยากมาก แต่ผมไม่อ่านรายละเอียดที่เขามีให้อ่าน เอาแต่อ่านผ่าน ๆ หวังจะเจอ Quick Solution ตอนนี้เริ่มเข้าใจแล้วว่าโลกนี้ไม่ใช่มาม่า ไวไว ไม่มีอะไรง่ายกว่าที่มันควรจะเป็น&lt;/li&gt;
&lt;/ul&gt;ตอนนี้มีความต้องการสร้าง Class File มาก ก็เลยไม่เสียเวลาหา Quick Solution แล้วลุยตามคำแนะนำในอินเตอร์เนตเลย จากการค้นดูพบเอกสารที่สำคัญ 3 รายการด้วยกันคือ &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.tug.org/pracjourn/2005-4/hefferon/"&gt;Minutes in Less Than Hours: Using LaTeX Resources&lt;/a&gt; โดย Jim Hefferon&lt;/li&gt;
&lt;li&gt;&lt;a href="http://tug.org/pracjourn/2006-4/flynn/"&gt;Rolling your own Document Class: Using LaTeX to keep away from the Dark Side&lt;/a&gt; โดย Peter&amp;nbsp; Flynn&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.latex-project.org/guides/clsguide.pdf"&gt;LaTeX2e for class and package writers&lt;/a&gt; โดยทีม LaTeX3 Project&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/0201362996?ie=UTF8&amp;amp;tag=ktlinux-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0201362996"&gt;The LaTeX Companion (Tools and Techniques for Computer Typesetting)&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=ktlinux-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0201362996" style="border: medium none ! important; margin: 0px ! important;" width="1" /&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;บทความที่ควรอ่านก่อนสำหรับผมก็คือบทความแรก บทความนี้นำเสนอแนวคิดว่า Latex มีคนเขียน Package ต่าง ๆ เยอะแล้ว ถ้าต้องการปรับแต่งเอกสาร ทำผ่าน Package พวกนี้โดยไม่ต้องไปเขียน Code หน้าตาแปลก ๆ ก็ได้ เพราะงานส่วนใหญ่ที่เราอยากทำนั้น เราไม่ใช่คนแรกแน่ ๆ เช่นการตั้งกั้นหน้า กั้นหลัง มันต้องมีคนเขียนโปรแกรมเพื่อจัดการงานเหล่านี้ไว้แล้ว สิ่งที่เราต้องทำก็คือ รู้ให้ชัดว่าเราต้องการอะไร แล้วก็หาโปรแกรม (Package) ที่สอดคล้องกับความต้องการของเรามาใช้งาน&lt;br /&gt;
&lt;br /&gt;
บทความที่สองจะช่วยเวลาเราไม่รู้ว่าคำสั่งนี้ทำงานอย่างไร บทความที่สองจะมี Code ที่สำคัญของ Class article ให้อ่านพร้อมอธิบายผลของมัน ทำให้เข้าใจกลไกการทำงานของ Class มากขึ้น&lt;br /&gt;
&lt;br /&gt;
บทความที่สาม อืม...อันที่จริง ผมยังไม่ค่อยได้อ่านบทความที่สามนี้เท่าไรนะ&lt;br /&gt;
&lt;br /&gt;
เอกสารอีกฉบับเป็นหนังสือเลยคือ &lt;a href="http://www.amazon.com/gp/product/0201362996?ie=UTF8&amp;amp;tag=ktlinux-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0201362996"&gt;The LaTeX Companion&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=ktlinux-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0201362996" style="border: medium none ! important; margin: 0px ! important;" width="1" /&gt;&lt;br /&gt;
หากไม่มีอธิบายในเอกสาร 3 ฉบับข้างต้น ผมจะมาไล่ดูใน Index ของหนังสือเล่มนี้ (แน่ะ! Quick Solution อีกแล้ว - แหมหนังสือมันหนาตั้ง 1090 หน้าเชียวนะครับ)&lt;br /&gt;
&lt;br /&gt;
ตอนนี้ผมต้องการสร้าง Class File สำหรับการเขียนบทความวิจัยสำหรับการประชุมวิชาการทางวิศวกรรมไฟฟ้า (&lt;a href="http://www.eecon-thailand.org/"&gt;Electrical Engineering Conference - EECON&lt;/a&gt;) สิ่งที่ต้องทำจึงประกอบด้วย&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;strike&gt;เรียกใช้ Class proc ซึ่งมีอยู่แล้ว&lt;/strike&gt; จากนั้นจึงปรับแก้พารามิเตอร์ต่าง ๆ&lt;/li&gt;
&lt;li&gt;&lt;strike&gt;ตั้งค่าขอบกระดาษ&lt;/strike&gt; ทำได้โดยใช้ &lt;a href="http://www.ctan.org/tex-archive/macros/latex/contrib/geometry/"&gt;Package geometry&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strike&gt;ตั้งค่าแบบอักษรเป็นแบบ Times Roman&lt;/strike&gt; ทำได้โดยใช้ &lt;a href="http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=mathptmx"&gt;Package mathptmx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strike&gt;ตั้งค่าระยะห่างระหว่างชื่อบทความกับชื่อผู้แต่ง&lt;/strike&gt; ทำได้โดยใช้คำสั่ง renewcommand กับ maketitle&lt;/li&gt;
&lt;li&gt;&lt;strike&gt;ตั้งค่าระยะห่างระหว่างชื่อผู้แต่งกับเนื้อบทความ&lt;/strike&gt; ทำได้โดยใช้คำสั่ง renewcommand กับ maketitle&lt;/li&gt;
&lt;li&gt;สร้างคำสั่งที่จะผูกชื่อผู้แต่งกับสถาบันไว้ด้วยกัน &lt;/li&gt;
&lt;li&gt;สร้างคำสั่งที่จะบังชื่อผู้แต่งกับสถาบัน สำหรับฉบับที่จะส่งให้ Reviewer อ่าน&lt;/li&gt;
&lt;li&gt;สร้างคำสั่ง Keyword&lt;/li&gt;
&lt;li&gt;&lt;strike&gt;ตั้งค่าระยะห่างระหว่าง หมายเลขหัวข้อกับชื่อหัวข้อ&lt;/strike&gt; ทำได้โดยใช้ &lt;a href="http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=titlesec"&gt;Package titlesec&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strike&gt;ทำให้ย่อหน้าแรกหลังจากหัวข้อ มีย่อหน้า (Indent)&lt;/strike&gt; ทำได้โดยใช้ &lt;a href="http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=indentfirst"&gt;Package indentfirst&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;จัดการกับระบบอ้างอิง&lt;/li&gt;
&lt;li&gt;สร้างคำสั่งเติมรูปและประวัติผู้เขียน&lt;/li&gt;
&lt;/ol&gt;ตอนนี้ทำส่วนที่ง่ายเสร็จไปบางส่วนแล้ว หากทำได้ทั้งหมดก็จะนำมาแบ่งปันประสบการณ์กันต่อไปครับ&lt;br /&gt;
&lt;br /&gt;
สิ่งที่ได้มาจากการ "ลงมือทำ" ก็คือ คำสั่งที่เคยดูแปลกตาเมื่อสมัยก่อน ตอนนี้ผมก็เริ่มรู้สึกคุ้น ๆ กับมันมากขึ้น และเริ่ม "อ่านออก" หลายคำสั่งแล้ว&lt;br /&gt;
&lt;br /&gt;
หากสามารถสร้าง Class File สำหรับ EECON ภาษาอังกฤษได้ ต่อไปจะพยายามทำ Class File สำหรับ EECON ภาษาไทยดู อันนี้ดูจะยากกว่าทั้งในเรื่องต้องมี Title 2 หัว คือทั้งภาษาไทยและภาษาอังกฤษ ต้องมีทั้งบทคัดย่อภาษาไทย และ Abstract ภาษาอังกฤษ ต้องจัดการระบบอ้างอิงเอกสารภาษาไทยปนกับภาษาอังกฤษด้วย ก็จะค่อย ๆ ลองทำไป ใครมีคำแนะนำอะไรก็ยินดีเรียนรู้และขอขอบคุณล่วงหน้าครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-8247697604717930855?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rkIBJhpyBQq0gH74CCdLvtyvb60/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rkIBJhpyBQq0gH74CCdLvtyvb60/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rkIBJhpyBQq0gH74CCdLvtyvb60/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rkIBJhpyBQq0gH74CCdLvtyvb60/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/OaKBgHZFf0Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/8247697604717930855/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=8247697604717930855" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/8247697604717930855?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/8247697604717930855?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/OaKBgHZFf0Y/template-latex.html" title="ประสบการณ์การสร้าง Template ของ Latex สำหรับการเขียนบทความวิจัย" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2010/08/template-latex.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEFRH8zeCp7ImA9WxFWFUQ.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-7470151727777032914</id><published>2010-06-03T12:50:00.000-07:00</published><updated>2010-06-03T12:50:15.180-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-03T12:50:15.180-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Latex" /><category scheme="http://www.blogger.com/atom/ns#" term="xfig" /><title>ใช้ Latex เขียนหนังสือราชการ</title><content type="html">ผมใช้ Latex มานาน แต่ก็มีความเชี่ยวชาญ Latex เพียงระดับธรรมดา คืออ่านคู่มือออก ใช้งานได้ แต่ไม่เก่งกาจถึงขนาดออกแบบเอกสารเองได้ ใช้เป็นเพียงคลาสหรือแพคเกจที่มีคนออกแบบไว้ให้แล้วเท่านั้น ดังนั้นปัจจุบันจึงใช้ Latex เขียนเพียงเอกสารประกอบการสอนโดยใช้แพคเกจ Beamer ช่วย (และใช้สไตล์และธีมสำเร็จรูปที่มากับแพคเกจ)&lt;br /&gt;
&lt;br /&gt;
แต่ผมก็หงุดหงิดกับการใช้ Open Office ในการเขียนหนังสือราชการเพราะเราใช้ Open Office ไม่คล่อง ควบคุมตำแหน่งจำพวกกั้นหน้า แท็ป ย่อหน้า ไม่ใคร่จะได้&lt;br /&gt;
&lt;br /&gt;
ก็นึกได้ว่าเคยเห็นแพคเกจหนึ่งในรายชื่อแพคเกจของ Synaptic คือ fig2sty ซึ่งมีคำอธิบายว่าเป็นโปรแกรมช่วยออกแบบเอกสารสำหรับ Latex ด้วย xfig จึงลองอ่าน man page ดู พบว่าใช้งานง่าย จึงทดลองใช้ fig2sty ช่วยออกแบบหนังสือราชการดู&lt;br /&gt;
&lt;br /&gt;
การใช้งาน fig2sty มีหลักการง่าย ๆ ก็คือ&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;สร้าง Layout ของเอกสารด้วย xfig โดยสร้างเป็นแฟ้มรูปภาพ fig โดยตำแหน่งต่าง ๆ ระบุด้วยกรอบสี่เหลี่ยม &lt;/li&gt;
&lt;li&gt;ในแทรกแท็กข้อความ (อ่านความหมายของพารามิเตอร์ข้อความจาก man page) เช่นชื่อ type ของข้อความในตำแหน่งนั้น ๆ&lt;/li&gt;
&lt;li&gt;เรียกใช้คำสั่ง &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; fig2sty yourlayout.fig &lt;span style="font-family: inherit;"&gt;ท่านจะได้แฟ้ม yourlayout.sty มา&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;เขียนแฟ้ม tex โดยเรียกใช้แฟ้ม sty &lt;/span&gt;ในแฟ้มนี้&lt;/li&gt;
&lt;li&gt;เรียกใช้คำสั่งของ Latex ตามขั้นตอนปกติ&lt;/li&gt;
&lt;/ol&gt;&lt;b&gt;สร้าง Layout ด้วย xfig และแท็กต่าง ๆ&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_d72Ndtf-05M/TAgBUK17S0I/AAAAAAAAAEk/aKA8kqbVMzY/s1600/officialmemo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/_d72Ndtf-05M/TAgBUK17S0I/AAAAAAAAAEk/aKA8kqbVMzY/s400/officialmemo.png" width="276" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;การเรียกใช้แฟ้ม sty จากแฟ้ม tex&lt;/b&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
\documentclass{article}&lt;br /&gt;
\usepackage[thai]{babel}&lt;br /&gt;
\usepackage{figtosty}   &amp;lt;----- &lt;span style="color: red;"&gt;เรียกใช้แพคเกจนี้&lt;/span&gt; &lt;br /&gt;
\usepackage{yourlayout} &amp;lt;--- &lt;span style="color: red;"&gt;เรียกใช้ yourlayout แล้วแต่ว่าตั้งชื่อไว้ว่าอย่างไร&lt;/span&gt;  &lt;br /&gt;
&lt;br /&gt;
\begin{document} &lt;br /&gt;
\begin{officialmemo} &lt;br /&gt;
\begin{figframe}{header}&amp;nbsp; &amp;lt;--- &lt;span style="color: red;"&gt;ชื่อแท็กตาม Layout ที่ออกแบบ&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;\begin{center}&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;{\Large {\bf บันทึกข้อความ}} &amp;lt;--- &lt;span style="color: red;"&gt;หัวกระดาษ&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;\end{center}&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;\end{figframe}&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;\begin{figframe}{headtag} &amp;lt;--- &lt;span style="color: red;"&gt;ชื่อแท็กตาม Layput ที่ออกแบบ&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;\noindent {\bf ส่วนราชการ} คณะ... ภาควิชา... \\&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;ที่ ศธ xxxx.x.x/xxxx \\&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;{\bf เรื่อง} ขอความอนุเคราะห์&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;\\ {\bf เรียน} หัวหน้าฝ่าย&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;\\ \indent {\bf โทร} xxxxx, xxxxx&amp;nbsp; &amp;gt;--- &lt;span style="color: red;"&gt;รูปแบบส่วนหัวของหนังสือราชการที่ผมใช้&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;\\ วันที่ 2 มิถุนายน 2553\\&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;\\&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;\\&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;\end{figframe}&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;\begin{figframe}{body}&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;\indent เนื่องด้วยอะไรสักอย่าง...&amp;nbsp; &amp;lt;--- &lt;span style="color: red;"&gt;เนื้อความ&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;  \hspace*{8cm}ด้วยความนับถือ \\&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;--- &lt;span style="color: red;"&gt;คำลงท้ายหนังสือ&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;\\&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;\\&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;\hspace*{9cm}อาจารย์นั่งฟัง ตั้งใจสอน&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;\\&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;\hspace*{9cm}อาจารย์ประจำภาควิชาฯ&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;\end{figframe}&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;\end{officialmemo}&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;\end{document} &lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;ในโค้ด Latex ผมละส่วนที่เกี่ยวกับการจัดกั้นหน้า กั้นหลังไว้ เนื่องจากไม่แน่ใจว่าหากไปทดลองที่เครื่องอื่นแล้วจะได้ผลแน่นอนเหมือนกันหรือไม่ &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;ผลลัพธ์ที่ทดลองได้&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_d72Ndtf-05M/TAgFIxzAk_I/AAAAAAAAAEs/CbdEUTv2INA/s1600/example.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/_d72Ndtf-05M/TAgFIxzAk_I/AAAAAAAAAEs/CbdEUTv2INA/s400/example.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;ปัญหาที่พบ&lt;/b&gt;&lt;br /&gt;
หากไม่ตั้งค่ากั้นหน้า กั้นหลัง และออฟเซ็ตต่าง ๆ เอกสารจะกินขวา ผมแก้โดย preemble นี้&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
\pagestyle{empty}&lt;br /&gt;
\setlength{\hoffset}{0pt}&lt;br /&gt;
\setlength{\marginparwidth}{0pt}&lt;br /&gt;
\setlength{\oddsidemargin}{0pt}&lt;br /&gt;
\setlength{\textwidth}{17cm}&lt;br /&gt;
&lt;br /&gt;
\setlength{\voffset}{0pt}&lt;br /&gt;
\setlength{\topmargin}{0pt}&lt;br /&gt;
\setlength{\headheight}{0pt}&lt;br /&gt;
\setlength{\headsep}{0pt}&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
ปัญหาถัดมาคือตัวหนังสือที่คอลัมน์ซ้ายกับคอลัมน์ขวาของส่วนหัว (เรื่อง เรียน ฯลฯ) ไม่ตรงบรรทัดกัน ผมแก้แบบถึก ๆ โดยเติมแท็ก offset ลงในกรอบขวา ค่อย ๆ ปรับจนตรงกัน&lt;br /&gt;
&lt;br /&gt;
ปัญหาสุดท้าย คือส่วนคำลงท้าย เราควบคุมตำแหน่งได้แน่นอนก็จริง แต่ถ้ามีการเปลี่ยนแปลงข้อความ ก็จะต้องมาตั้งค่าตรงนี้กันใหม่อีก ผมยังแก้ไม่ได้ แต่คิดว่าน่าจะใช้คำสั่ง box ของ Latex ช่วยได้ เอาไว้ลองแล้วจะมารายงานผลต่อไปครับ&lt;br /&gt;
&lt;br /&gt;
เรื่องตลกที่สุดของงานนี้ก็คือ แฟนผมมาเห็นเข้าว่าผมกำลังทำอะไรอยู่ พออธิบายให้ฟัง เธอก็แซวว่า&lt;br /&gt;
&lt;blockquote&gt;"ถ้าเป็นเรานะ เราคงใช้ Latex ทำในสิ่งที่ Word ทำไม่ได้ ถ้าทำแค่นี้เราใช้ Word เร็วกว่า"&lt;/blockquote&gt;คิดไปคิดมา เออนะ มันก็จริงของเขา แต่เอาเถอะ ผมว่าผมทำ Layout ไว้อย่างนี้ สบายกว่าที่จะไปหงุดหงิดกับกั้นหน้ากั้นหลังอะไรนั่นของ Open Office อยู่บ้างหรอก&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-7470151727777032914?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/n4yS3znRfVGAtJFbJjUKbhskInY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n4yS3znRfVGAtJFbJjUKbhskInY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/n4yS3znRfVGAtJFbJjUKbhskInY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n4yS3znRfVGAtJFbJjUKbhskInY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/KHhPaHNikig" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/7470151727777032914/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=7470151727777032914" title="4 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/7470151727777032914?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/7470151727777032914?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/KHhPaHNikig/latex.html" title="ใช้ Latex เขียนหนังสือราชการ" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_d72Ndtf-05M/TAgBUK17S0I/AAAAAAAAAEk/aKA8kqbVMzY/s72-c/officialmemo.png" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2010/06/latex.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cGQX09fyp7ImA9WxFWEkQ.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-6038713861402792466</id><published>2010-05-27T11:07:00.000-07:00</published><updated>2010-05-31T02:43:40.367-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-31T02:43:40.367-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Web" /><category scheme="http://www.blogger.com/atom/ns#" term="Latex" /><title>การเขียนสมการในเว๊บและในบล๊อก</title><content type="html">การเขียนสมการในบล๊อกหรือในเว๊บโดยทั่วไป (HTML) นั้น ทำไม่ได้เลย (หรือได้?) เมื่อมหาวิทยาลัยมีนโยบายให้ผู้สอนจัดสร้างสื่อ e-Learning สำหรับนักศึกษา เราก็อยากจะจัดทำเว๊บหรือเขียนบล๊อกที่บรรยายเนื้อหาที่สอน&lt;br /&gt;
&lt;br /&gt;
แต่เนื้อหาที่สอนไม่มีทางหลีกเลี่ยงสมการได้ เราจะเขียนสมการลงในเว๊บหรือบล๊อกของเราอย่างไร? โชคดีที่มีคนคิดแก้ปัญหานี้ไว้แล้วครับ นั่นก็คือจาวาสคริปต์เพื่อการสร้างสมการโดยแปลงรหัสสมการให้เป็นภาพแบบ svg สคริปต์ดังกล่าวก็คือ &lt;a href="http://www1.chapman.edu/%7Ejipsen/mathml/asciimath.html"&gt;ASCIIMathML.js&lt;/a&gt; สคริปต์ดังกล่าวนี้เขียนขึ้นและดูแลโดยนาย &lt;a href="http://www.chapman.edu/%7Ejipsen/"&gt;Peter Jibsen&lt;/a&gt; จากมหาวิทยาลัย &lt;a href="http://www.chapman.edu/"&gt;Chapman University&lt;/a&gt; ครับ&lt;br /&gt;
&lt;br /&gt;
วิธีใช้ก็ง่ายมาก (สำหรับเว๊บที่คุณมีอำนาจเต็ม) นั่นก็คือ&lt;br /&gt;
&lt;ol&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;ดาวน์โหลดสคริปต์ดังกล่าวจาก &lt;a href="http://mathcs.chapman.edu/%7Ejipsen/mathml/asciimathdownload.html"&gt;ASCIIMathML&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;อัพโหลดสคริปต์นันไปที่โฮสต์ของเว๊บไซต์ของคุณ เลือกไดเร็คตอรีได้ตามใจตราบใดที่ยังเป็นไดเร็คตอรีที่เข้าถึงได้ทาง www สมมติว่าเป็น webroot/ASCIIMathML.js ก็ได้ (เมื่อ webroot หมายถึงตำแหน่งรากของเว๊บของคุณ ไม่ใช่ตำแหน่ง root ของระบบ)&lt;/li&gt;
&lt;li&gt;เติมแท็กสคริปต์ลงในส่วนหัวของไฟล์ HTML ของหน้าเว๊บที่ต้องการแสดงสมการดังต่อไปนี้&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;&lt;i&gt;&amp;lt;script&amp;gt; type="text/javascript" src="ASCIIMathML.js" &amp;lt;/script&amp;gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;ลงในระหว่างแท็ก &amp;lt;head&amp;gt; ... &amp;lt;/head&amp;gt; ในแฟ้ม HTML นั้น ๆ ซึ่งส่วนนี้อาจอยู่ในแม่แบบของเว๊บ หรือจะเป็น HTML โดยตรงก็ได้ แล้วแต่เว๊บของท่าน&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;ในส่วนเนื้อความ ท่านก็สามารถเขียนสมการโดยใช้รหัสที่มีความคล้ายคลึงกันกับ LaTeX (เป็นส่วนใหญ่) ได้ โดยให้ครอบรหัสของสมการด้วย a``math ... enda``math&lt;br /&gt;
เช่น a``math x^{2}=\frac{1}{y} enda``math จะให้ผลเป็น amath x^{2}=\frac{1}{y} endamath&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;สำหรับกรณีการการเขียนสมการลงบล๊อก (เฉพาะที่รู้จักคือ blogger.com เท่านั้น) จะยุ่งนิดหน่อยเนื่องจาก&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;หาทางแทรกแท็ก &amp;lt;script&amp;gt;...&amp;lt;/script&amp;gt; เข้าไปใน Blog และ&lt;/li&gt;
&lt;li&gt;ต้องหาที่สำหรับเป็นโฮสของจาวาสคริปต์อันนี้&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;ปัญหาแรกนั้นมีทางทำได้ไม่ยาก ให้ไปที่เมนูรูปแบบ (Template) ของบล๊อกของคุณ และแก้ไขแม่แบบแบบ HTML ดังรูป การแทรกโค้ดให้แทรกในแท็กส่วนหัว (Head) ซึ่งในนั้นจะมีโค้ดอื่น ๆ อีกเยอะ ก็เลือกแทรกตรงใกล้ ๆ กับท้าย ๆ แท็กก็ได้ครับ&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_d72Ndtf-05M/S__xi3s1eKI/AAAAAAAAAEc/XDm1_5_tQuY/s1600/TemplateEdit.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="171" src="http://2.bp.blogspot.com/_d72Ndtf-05M/S__xi3s1eKI/AAAAAAAAAEc/XDm1_5_tQuY/s400/TemplateEdit.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
ส่วนปัญหาที่สอง เนื่องจากผมไม่สามารถอัพโหลดสคริปต์ตัวนี้ เข้าไปไว้ใน Blogger ได้ ทางออกก็คือหาเว๊บอื่นสำหรับใช้เป็นโฮสของสคริปต์ตัวนี้ และให้เรียกสคริปต์ตัวนี้จากโฮสดังกล่าวในแท็ก &lt;br /&gt;
&lt;blockquote&gt;&lt;i&gt;&amp;lt;script&amp;gt; type="text/javascript" src="http://www.yourhost.com/ASCIIMathML.js" &amp;lt;/script&amp;gt;&lt;/i&gt;&lt;/blockquote&gt;&amp;nbsp;ในส่วนหัว (&amp;lt;head&amp;gt;...&amp;lt;/head&amp;gt;) ของแฟ้ม HTML ของคุณ สังเกตว่า src ของสคริปต์กลายเป็น URL ของเว๊บที่ใช้โฮสแล้ว ปัญหาคือผมไม่มีโฮสแบบนั้นเป็นของตัวเองนี่สิ ผมมีแต่ Google Site จะทำยังไงดี?&lt;br /&gt;
&lt;br /&gt;
ทางออกง่ายอย่างคิดไม่ถึงครับ คำแนะนำอันนี้ผมพบที่ &lt;a href="http://soswitcher.blogspot.com/2009/05/blogger-host-javascript-file-for-free.html"&gt;SOSwitch Blog&lt;/a&gt; ซึ่งขั้นตอนมีดังนี้ครับ (อนุมานว่ามีบัญชี Google Site และเปิดไซต์แล้วนะครับ)&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;ดาวน์โหลดสคริปต์มาไว้ที่เครื่องตนเองก่อน&lt;/li&gt;
&lt;li&gt;เปลี่ยนนามสกุลแฟ้มเป็น txt เสีย&lt;/li&gt;
&lt;li&gt;ไปที่ไซต์ของตนเองใน Google Site&amp;nbsp;&lt;/li&gt;
&lt;li&gt;สร้างหน้าเว๊บใหม่ขึ้นมาโดยใช้แม่แบบตู้เอกสาร (File Cabinet) หรือถ้ามีอยู่แล้วและใช้รวมกันได้ก็ไม่ต้องสร้างใหม่ ข้ามขั้นตอนนี้ไปเลย&lt;/li&gt;
&lt;li&gt;อัพโหลดแฟ้มสคริปต์ที่เปลี่ยนนามสกุลแล้วขึ้นไป&lt;/li&gt;
&lt;li&gt;คัดลอกลิงก์ที่ชี้มาที่แฟ้มนี้ในตู้เอกสาร เอาเฉพาะ URL ส่วนขยายอื่น ๆ เช่น ?attredirects=0&amp;amp;d=1 ก็ตัดทิ้งไป ลิงก์ที่คัดลอกมานี้แหละครับ นำไปใช้ที่ scr ในแท็ก &lt;i&gt;&amp;lt;script&amp;gt; &lt;/i&gt;ข้างบน&lt;/li&gt;
&lt;/ul&gt;เมื่อเสร็จแล้ว ก็สามารถสนุกสนานกับการเขียนสมการเพื่อประกอบการสอนได้ดังนี้&lt;br /&gt;
&lt;div style="text-align: center;"&gt;amath P_{3}^{0}=A_{0}(x-x_{0})^{3}+B_{0}(x-x_{0})^{2}+C_{0}(x-x_{0})+D_{0} endamath &lt;/div&gt;&lt;div style="text-align: left;"&gt;อยากเขียนเท่าไรก็เขียนไป เขียนกันให้สะใจไปเลย!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-6038713861402792466?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pi7Ig2GqDk8rN4rTT81nv8Io7Xw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pi7Ig2GqDk8rN4rTT81nv8Io7Xw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pi7Ig2GqDk8rN4rTT81nv8Io7Xw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pi7Ig2GqDk8rN4rTT81nv8Io7Xw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/iGxMR_ZCeww" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/6038713861402792466/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=6038713861402792466" title="1 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/6038713861402792466?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/6038713861402792466?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/iGxMR_ZCeww/blog-post.html" title="การเขียนสมการในเว๊บและในบล๊อก" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_d72Ndtf-05M/S__xi3s1eKI/AAAAAAAAAEc/XDm1_5_tQuY/s72-c/TemplateEdit.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2010/05/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcMQXc-fCp7ImA9WxFXGEU.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-2659154134826225744</id><published>2010-05-09T23:53:00.000-07:00</published><updated>2010-05-26T07:11:20.954-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-26T07:11:20.954-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Electronics" /><title>การออกแบบวงจรโดยใช้โปรแกรม Opensource ตอนที่ 2/3</title><content type="html">หลังจากที่ได้ทดลอง KiCad ทำงานง่าย ๆ แล้ว ก็ถึงเวลาทดลองใช้ KiCad แบบจริงจัง คือมีชิ้นงานเป็นผลลัพธ์สุดท้ายได้ ความตั้งใจก็คือใช้ Opensouce โปรแกรม ในการออกแบบตั้งแต่ ลายวงจร (Schematic) จำลองวงจร (Simulation) ออกแบบแผ่นวงจรพิมพ์ และประกอบวงจรจริง ๆ โดยตั้งใจว่าจะแบ่งทำเป็น 3 ตอนคือ&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://kt-linux.blogspot.com/2010/04/opensource-13.html"&gt;ตอนที่ 1 วาดลายวงจร โดยใช้ KiCad และจำลองวงจรโดยใช้ gnucap ร่วมกับ gspiceui&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://kt-linux.blogspot.com/2010/05/opensource-23.html"&gt;ตอนที่ 2 ออกแบบแผ่นวงจรพิมพ์โดยใช้ KiCad และ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ตอนที่ 3 ประกอบวงจรและทดสอบ&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;ตอนที่ 2 ออกแบบแผ่นวงจรพิมพ์โดยใช้ KiCad&lt;/b&gt;&lt;br /&gt;
จากลายวงจรและการจำลองวงจรในตอนที่ 1 ในการทำงานจริงเราควรต่อวงจรลงบนโปรโตบอร์ดเพื่อให้มั่นใจเสียก่อนว่าวงจรทำงานได้จริง แต่เนื่องจากวงจรที่กำลังออกแบบอยู่นี้เป็นวงจรแบบง่าย จึงละไว้&lt;br /&gt;
&lt;br /&gt;
เมื่อจะออกแบบแผ่นวงจรพิมพ์ ก็มี 2 - 3 ประเด็นที่ทำให้ต้องไปปรับปรุงแก้ไขวงจรในตอนที่ 1 เสียใหม่ คือ&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;แม้ว่าในอุดมคติ วงจรนี้จะมีศักยภาพที่จะขับกำลังได้ถึง 1.5 วัตต์ ที่โหลด 8 โอห์ม แต่เมื่อทดสอบโดยการจำลองวงจรแล้ว พบว่ากำลังสูงสุดที่จ่ายได้คือ 0.25 วัตต์ ไม่ใช่ 0.5 วัตต์ ซึ่งถือว่าน้อย ปัญหาอาจเกิดจากการตั้งจุดไบแอสของทรานซิสเตอร์แต่ละตัว หรืออาจเกิดจากข้อจำกัดของตัวทรานซิสเตอร์ที่เลือกใช้ อาจปรับปรุงได้ในอนาคต&lt;/li&gt;
&lt;li&gt;วงจรในตอนที่ 1 ไม่มีแหล่งจ่ายไฟ ก็เติมส่วนของแหล่งจ่ายไฟตรงแบบง่าย ๆ โดยใช้ไอซีเรกกูเลเตอร์เบอร์ยอดนิยม 7812 เนื่องจากกำลังสูงสุดที่จะขับได้ที่โหลด 8 โอหม์ คือ 0.25 วัตต์ หมายความว่ากระแสสูงสุดคือ 0.25 แอมแปร์ ไอซีขนาด 1 แอมแปร์ก็เกินพอ&lt;/li&gt;
&lt;li&gt;วงจรในตอนที่ 1 มีช่องสัญญาณเดียว หากตั้งใจจะใช้กับเครื่องเล่น MP3 ก็ควรทำให้พร้อมสำหรับสเตอริโอ จึงได้เพิ่มวงจรลงไปอีกหนึ่งช่องสัญญาณซึ่งเหมือนกันทุกประการ&lt;/li&gt;
&lt;li&gt;เมื่อไปซื้อวัสดุ พบว่าบางรายการไม่มีขาย จึงปรับแก้รายการวัสดุเล็กน้อย ทดสอบจำลองวงจรแล้วไม่มีปัญหา &lt;/li&gt;
&lt;/ul&gt;แก้ไขแล้วได้ลายวงจรดังรูป&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_d72Ndtf-05M/S-epI751xKI/AAAAAAAAAD8/WTveqrYKHPI/s1600/MiniWatt_sch.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://2.bp.blogspot.com/_d72Ndtf-05M/S-epI751xKI/AAAAAAAAAD8/WTveqrYKHPI/s640/MiniWatt_sch.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;ก่อนจะสร้าง Netlist เพื่อนำไปทำแผ่นวงจรพิมพ์ จะต้องทำการ "เรียงเบอร์" (Annotate Schematic) เสียก่อน โปรแกรมจะทำการใส่เลขประจำตัวเช่น C1 C2 ให้กับอุปกรณ์แต่ละตัวโดยอัตโนมัติ เมื่อเรียงเบอร์เสร็จแล้ว ก็สามารถสร้าง Netlist ได้&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;Netlist ที่สร้างขึ้นจะเป็นแฟ้มข้อความ ระบุการเชื่อมต่อระหว่างโนดต่าง ๆ ในวงจร ขั้นตอนต่อไปคือการระบุ Footprint ของวัสดุแต่ละตัว ตรงนี้ KiCad ระบุว่าเป็นจุดที่แตกต่างจากโปรแกรม EDA อื่น ๆ ตรงที่ วัสดุหนึ่งรายการในลายวงจร เช่น C1 เราสามารถเลือก Footprint ให้ C1 ได้อย่างอิสระ (ข้อดีคือเราไม่ต้องสร้าง Symbol ใหม่ เมื่อมี Footprint ใหม่ ข้อเสียคือเราอาจเลือกผิด) การผูกวัสดุเข้ากับ Footprint ให้ใช้โปรแกรม Cvpcb ซึ่งเรียกใช้ได้จากแถบเครื่องมือของ EESchema หรือจาก Project Manager ของ KiCad ก็ได้&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_d72Ndtf-05M/S-erT_1ImsI/AAAAAAAAAEE/VeqPc08v7a0/s1600/MiniWatt_net.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://1.bp.blogspot.com/_d72Ndtf-05M/S-erT_1ImsI/AAAAAAAAAEE/VeqPc08v7a0/s640/MiniWatt_net.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;จากรูปหลักแรกคือลำดับที่ หลักที่ 2 คือชื่ออุปกรณ์ หลักที่ 3 คือค่าของอุปกรณ์ และหลักที่ 4 คือ Footprint ของอุปกรณ์ ซึ่งเราจะต้องเลือกเองให้ถูกต้องตรงกับวัสดุที่เรามี&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;เมื่อผูกวัสดุเข้ากับ Footprint ได้แล้ว จึงเรียก pcbnew ขึ้นมา โดยจะเรียกจากแถบเครื่องมือของ EESchema หรือจาก Project Manager ของ KiCad ก็ได้เช่นเดียวกัน น่าเสียดายว่าตอนที่ดำเนินการออกแบบแผ่นวงจรพิมพ์นั้นไม่ได้เก็บรูปต่าง ๆ ไว้ จึงจะไม่เขียนละเอียด&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;ข้อสังเกตสำคัญที่พบตอนที่ออกแบบก็คือ ค่าพารามิเตอร์ของลายเส้นของลายวงจรหรือแทร็ค (Track) จะไม่อยู่ในส่วนของ Preferences แต่จะอยู่ในส่วนของ Design Rule กว่าจะหาเจอก็งงไปนานเหมือนกัน การตั้งค่าความกว้างของแทร็ค และ Design Rule อื่น ๆ สามารถตั้งได้เองทั้งหมด ซึ่งน่าจะเป็นปัญหาสำหรับมือใหม่ หรือมือสมัครเล่น (เช่นผมเอง) เนื่องจากไม่ทราบเกณฑ์ต่าง ๆ ในการสร้างแผ่นวงจรพิมพ์ แต่ถ้าเราจะจ้างบริษัทให้กัดแผ่นวงจรพิมพ์ให้เรา ผมว่าบริษัทอาจมีเกณฑ์ Design Rule ที่เราขอทราบข้อมูลได้&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;วงจรเล็กนิดเดียว พอรู้วิธีทำก็สามารถทำเสร็จได้ภายในเวลา 2 คืน หน้าตาเป็นดังรูป&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_d72Ndtf-05M/S-es3nFo4eI/AAAAAAAAAEM/W6qeJaTffXc/s1600/MiniWatt_pcb.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://4.bp.blogspot.com/_d72Ndtf-05M/S-es3nFo4eI/AAAAAAAAAEM/W6qeJaTffXc/s640/MiniWatt_pcb.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;strike&gt;น่าเสียดายว่าไม่สามารถแสดงรูป 3 มิติของแผ่นวงจรพิมพ์นี้ได้ เข้าใจว่าเป็น Bug ของ KiCad เอง แต่ว่าไม่รู้ว่าจะรายงาน Bug อย่างไร เนื่องจากหน้าจอมันจะมืดไปเฉย ๆ ไม่มีข้อมูล เลยไม่แน่ใจว่าเป็น Bug ของ KiCad หรือของ Mesa หรือว่าของ X ไม่งั้นคงมีภาพ 3 มิติสวย ๆ มาอวดกัน&lt;/strike&gt;&lt;br /&gt;
&lt;strike&gt;&lt;br /&gt;
&lt;/strike&gt;&lt;br /&gt;
หลังจากอัพเกรดและอัพเดต sid ล่าสุดพบว่ามีการอัพเกรด X หลายโมดูล เลยทดลองสร้างภาพสามมิติของ KiCad ดูอีกครั้งปรากฏว่าไม่มืดแล้วครับ แล้วก็ได้ภาพมาด้วย เลยขอเอามาอวดกันสักหน่อย&lt;strike&gt;&lt;/strike&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_d72Ndtf-05M/S_0p3TZaWAI/AAAAAAAAAEU/UpzpLdF1p_I/s1600/MiniWatt-3D.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="246" src="http://3.bp.blogspot.com/_d72Ndtf-05M/S_0p3TZaWAI/AAAAAAAAAEU/UpzpLdF1p_I/s400/MiniWatt-3D.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;ตอนนี้กัดปริ้นได้แล้วครับ แต่ยังเจาะไม่ครบเลยยังไม่ได้ลองประกอบดู หากประกอบเสร็จก็จะเอามาลง Blog เหมือนเคย อันที่จริง วงจรแค่นี้มันก็ถือว่าจิ๊บจ๊อยมากเมื่อเทียบกับงานของอีกหลาย ๆ ท่าน แต่ก็อยากเอามาลงไว้ในฐานะที่เป็นวงจรที่ (ตั้งใจจะ) ใช้ KiCad ในการสร้างจนใช้งานได้จริงเป็นชิ้นแรก หากผลงานออกมาดีจะเอาไว้ใช้ช่วยสอนในวิชาอิเล็กทรอนิกส์ด้วยเสียเลย&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-2659154134826225744?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qiA8aLS4trkWOh11YkPPXZrFIZY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qiA8aLS4trkWOh11YkPPXZrFIZY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qiA8aLS4trkWOh11YkPPXZrFIZY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qiA8aLS4trkWOh11YkPPXZrFIZY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/ikLib21YfdU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/2659154134826225744/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=2659154134826225744" title="3 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/2659154134826225744?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/2659154134826225744?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/ikLib21YfdU/opensource-23.html" title="การออกแบบวงจรโดยใช้โปรแกรม Opensource ตอนที่ 2/3" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_d72Ndtf-05M/S-epI751xKI/AAAAAAAAAD8/WTveqrYKHPI/s72-c/MiniWatt_sch.png" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2010/05/opensource-23.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIFSXwzeSp7ImA9WxFQFEo.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-7026173438407573822</id><published>2010-04-25T05:45:00.000-07:00</published><updated>2010-05-09T23:55:18.281-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-09T23:55:18.281-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Electronics" /><title>การออกแบบวงจรโดยใช้โปรแกรม Opensource ตอนที่ 1/3</title><content type="html">หลังจากที่ได้ทดลอง KiCad ทำงานง่าย ๆ แล้ว ก็ถึงเวลาทดลองใช้ KiCad แบบจริงจัง คือมีชิ้นงานเป็นผลลัพธ์สุดท้ายได้ ความตั้งใจก็คือใช้ Opensouce โปรแกรม ในการออกแบบตั้งแต่ ลายวงจร (Schematic) จำลองวงจร (Simulation) ออกแบบแผ่นวงจรพิมพ์ และประกอบวงจรจริง ๆ โดยตั้งใจว่าจะแบ่งทำเป็น 3 ตอนคือ&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://kt-linux.blogspot.com/2010/04/opensource-13.html"&gt;ตอนที่ 1 วาดลายวงจร โดยใช้ KiCad และจำลองวงจรโดยใช้ gnucap ร่วมกับ gspiceui&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://kt-linux.blogspot.com/2010/05/opensource-23.html"&gt;ตอนที่ 2 ออกแบบแผ่นวงจรพิมพ์โดยใช้ KiCad และ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ตอนที่ 3 ประกอบวงจรและทดสอบ&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;b&gt;วาดลายวงจร โดยใช้ KiCad และจำลองวงจรโดยใช้ gnucap ร่วมกับ gspiceui&lt;/b&gt;&lt;br /&gt;
วงจรที่เลือกคือวงจรขยายเสียงคลาสเอบีขนาด 0.5 วัตต์ ไม่ใช้ออปแอมป์หรือไอซีขยายเสียงสำเร็จรูป ออกแบบตามตำราเป๊ะ ๆ ไม่พลิกแพลงใด ๆ วงจรแบ่งออกเป็น 3 ส่วนย่อยซึ่งคนที่ผ่านวิชาอิเล็กทรอนิกส์น่าจะสังเกตได้ คือ&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;วงจรขยายแรงดันแบบอิมิตเตอร์ร่วม&lt;/li&gt;
&lt;li&gt;วงจรกันชน (Buffer)&lt;/li&gt;
&lt;li&gt;วงจรขยายกำลังคลาสเอบี&lt;/li&gt;
&lt;/ol&gt;ใช้ KiCad วาดลายวงจร โดยความตั้งใจแรกตอนที่วาดลายวงจรคือเพื่อสร้างแผ่นวงจร ลายวงจรจึงประกอบด้วยขั้วต่อสาย 3 จุด คือ ขั้วสัญญาณขาเข้า ขั้วสัญญาณขาออก และขั้วไฟเลี้ยง ดังรูป&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_d72Ndtf-05M/S9CKzGTFMBI/AAAAAAAAADk/Z0CXJ-CxirM/s1600/SimpleAmp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/_d72Ndtf-05M/S9CKzGTFMBI/AAAAAAAAADk/Z0CXJ-CxirM/s400/SimpleAmp.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;เมื่อได้ลายวงจรแล้ว เราจะให้ KiCad สร้าง Netlist สำหรับ gnucap ให้เราได้ ผลที่ได้จะเป็นแฟ้มข้อความนามสกุล CIR ซึ่งมีเนื้อหาดังนี้&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;* EESchema Netlist Version 1.1 (Spice format) creation date: อา. 25 เม.ย. 2553, 18:45:25&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
C1&amp;nbsp; 14 3 1u&lt;br /&gt;
P4&amp;nbsp; 0 CONN_1&lt;br /&gt;
P3&amp;nbsp; 5 CONN_1&lt;br /&gt;
P1&amp;nbsp; 14 0 CONN_2&lt;br /&gt;
C2&amp;nbsp; 13 0 470u&lt;br /&gt;
R2&amp;nbsp; 3 0 42k&lt;br /&gt;
R1&amp;nbsp; 5 3 79k&lt;br /&gt;
R5&amp;nbsp; 13 0 39&lt;br /&gt;
R3&amp;nbsp; 5 12 430&lt;br /&gt;
Q1&amp;nbsp; 4 3 12 2N3904&lt;br /&gt;
RV1&amp;nbsp; 10 10 9 100&lt;br /&gt;
R4&amp;nbsp; 4 13 82&lt;br /&gt;
Q2&amp;nbsp; 11 12 5 2N3904&lt;br /&gt;
R6&amp;nbsp; 8 0 220&lt;br /&gt;
D2&amp;nbsp; 9 8 1N4148&lt;br /&gt;
D1&amp;nbsp; 11 10 1N4148&lt;br /&gt;
C3&amp;nbsp; 6 7 470u&lt;br /&gt;
P2&amp;nbsp; 7 0 CONN_2&lt;br /&gt;
R8&amp;nbsp; 6 15 1&lt;br /&gt;
R7&amp;nbsp; 2 6 1&lt;br /&gt;
Q4&amp;nbsp; 15 8 0 2N2907&lt;br /&gt;
Q3&amp;nbsp; 2 11 5 2N2222&lt;br /&gt;
&lt;br /&gt;
.end&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;จากแฟ้มนี้ เราพบว่าต้องแก้ไขเพื่อให้จำลองวงจรใน gnucap ได้ 3 - 4 จุดด้วยกันคือ&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;ขั้วต่อสัญญาณ Px ต่าง ๆ ไม่ต้องใช้ ก็ลบออก&lt;/li&gt;
&lt;li&gt;การเรียงลำดับของขาทรานซิสเตอร์ใน KiCad กับ gnucap ไม่ตรงกัน กล่าวคือ ใน KiCad จะเรียงลำดับเป็น E-B-C ในขณะที่ gnucap ต้องการให้เรียงลำดับเป็น C-B-E ก็แก้ไขลำดับของขาให้ถูกต้อง&lt;/li&gt;
&lt;li&gt;มีอุปกรณ์ตัวหนึ่งคือตัวต้านทานปรับค่าได้ ที่ gnucap ยังจำลองไม่ได้ ก็แก้ไขให้เป็นตัวต้านทานแทน ไม่ต้องปรับค่า&lt;/li&gt;
&lt;li&gt;อุปกรณ์เซมิคอนดักเตอร์ยังไม่มีโมเดล (.model) ในโปรแกรม gnucap นี้เราสามารถใช้โมเดลของ Spice ซึ่งหาได้จากบริษัทผู้ผลิตทั่วไปได้ทันที แต่โมเดลเหล่านี้ไม่ใช่ Opensource ผมจึงนำมาพิมพ์ไว้ตรงนี้ไม่ได้ หากใครสนใจให้ลองเข้าไปหาจากดาตาชีทของบริษัท หรือจากเว็บก็ได้ เมื่อโหลดมาแล้วก็เติมเข้าไปท้ายแฟ้ม ก่อน .end&lt;/li&gt;
&lt;li&gt;ไม่ได้กำหนดตำแหน่งไฟเลี้ยง และสัญญาณขาเข้า ก็ให้เพิ่ม VSupply กับ Vin เข้าไป ตามไวยกรณ์ของ gnucap &lt;/li&gt;
&lt;/ol&gt;จะได้&lt;/div&gt;&lt;blockquote&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;* EESchema Netlist Version 1.1 (Spice format) creation date: อา. 25 เม.ย. 2553, 18:45:25&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
C1&amp;nbsp; 14 3 1u&lt;br /&gt;
&lt;strike style="color: #cccccc;"&gt;P4&amp;nbsp; 0 CONN_1&lt;br /&gt;
P3&amp;nbsp; 5 CONN_1&lt;br /&gt;
P1&amp;nbsp; 14 0 CONN_2&lt;/strike&gt;&lt;br /&gt;
C2&amp;nbsp; 13 0 470u&lt;br /&gt;
R2&amp;nbsp; 3 0 42k&lt;br /&gt;
R1&amp;nbsp; 5 3 79k&lt;br /&gt;
R5&amp;nbsp; 13 0 39&lt;br /&gt;
R3&amp;nbsp; 5 12 430&lt;br /&gt;
Q1&amp;nbsp; &lt;span style="color: red;"&gt;12 3 4&lt;/span&gt; 2N3904&lt;br /&gt;
&lt;strike style="color: #cccccc;"&gt;RV1&amp;nbsp; 10 10 9 100&lt;/strike&gt;&lt;br /&gt;
&lt;span style="color: red;"&gt;RV1 10 9 50&lt;/span&gt;&lt;br /&gt;
R4&amp;nbsp; 4 13 82&lt;br /&gt;
Q2&amp;nbsp; &lt;span style="color: red;"&gt;5 12 11&lt;/span&gt; 2N3904&lt;br /&gt;
R6&amp;nbsp; 8 0 220&lt;br /&gt;
D2&amp;nbsp; 9 8 1N4148&lt;br /&gt;
D1&amp;nbsp; 11 10 1N4148&lt;br /&gt;
C3&amp;nbsp; 6 7 470u&lt;br /&gt;
&lt;strike style="color: #cccccc;"&gt; P2&amp;nbsp; 7 0 CONN_2&lt;/strike&gt;&lt;br /&gt;
R8&amp;nbsp; 6 15 1&lt;br /&gt;
R7&amp;nbsp; 2 6 1&lt;br /&gt;
Q4&amp;nbsp; &lt;span style="color: red;"&gt;0 8 15&lt;/span&gt; 2N2907&lt;br /&gt;
Q3&amp;nbsp; &lt;span style="color: red;"&gt;5 11 2&lt;/span&gt; 2N2222&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: red;"&gt;VSupply 5 0 12&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; Vin 14 0 GENERATOR&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: red;"&gt; .model 1N4148 D (Is=5.84n...)*&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; .model 2N3904 NPN (Is=6.734f...)*&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; .model 2N2222 NPN (is=19f...)*&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; .model 2N2907 PNP (is=1.1P...)*&lt;/span&gt;&lt;br style="color: red;" /&gt; &lt;br /&gt;
.end&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;โมเดลที่ดอกจัน (*) ไว้ หมายความว่าจะต้องไปโหลดมาจากเว็บของผู้ผลิตเอง ซึ่งจะมีพารามิเตอร์ให้ครบสำหรับ Spice ในกรณีของเราซึ่งใช้ gnucap นี้ เมื่อรันโปรแกรมซิมูเลชั่นแล้วจะเกิด Error ขึ้นเนื่องจาก gnucap ไม่รู้จักพารามิเตอร์บางตัว ให้ลบพารามิเตอร์ตัวนั้นทิ้งได้ (อย่างไรก็ตาม ไม่สามารถรับรองผลการทดลองได้)&lt;br /&gt;
เมื่อเตรียมแฟ้มเรียบร้อยแล้ว เราสามารถเลือกใช้ gnucap แบบบรรทัดคำสั่งก็ได้ หรือจะใช้ gspiceui เพื่อใช้ gnucap แบบ GUI ก็ได้ ในกรณีนี้เราเลือกใช้ gspiceui ซึ่งเรียกจากบรรทัดคำสั่งโดย&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; gspiceui &amp;amp;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;จะได้&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_d72Ndtf-05M/S9Q0Drmzt2I/AAAAAAAAADs/WowUI5Dd-cI/s1600/MiniWatt_NetList.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/_d72Ndtf-05M/S9Q0Drmzt2I/AAAAAAAAADs/WowUI5Dd-cI/s400/MiniWatt_NetList.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
หลักการของ gspiceui ก็คือเราจะต้อง "สร้าง" (Create) การซิมูเลชั่นขึ้นมาเสียก่อน แล้วจึงจะ "รัน" (Run) ซิมูเลชั่นนั้น ๆ ได้ การ "สร้าง" ซิมูลเลชั่นก็คือการตั้งค่าต่าง ๆ ของการซิมูเลชั่น นั่นเอง เช่นการกำหนดประเภทของการซิมูเลชั่น (.op .dc .ac) การกำหนดโหนด (Node) ที่ต้องการสังเกต การกำหนดประเภทของตัวแปรที่ต้องการสังเกต (แรงดัน กระแส กำลัง ค่าความต้านทาน) ส่วนการ "รัน" ซิมูเลชั่นก็คือการสั่งให้ gnucap ทำตามที่สั่ง&lt;br /&gt;
&lt;br /&gt;
เมื่อทดลองใช้ดูพบว่าข้อความในแท็บ Netlist ไม่สามารถแก้ไขได้ ส่วนข้อความในแท็บ Simulation สามารถแก้ไขได้ นั่นหมายความว่าเราสามารถตกแต่งแก้ไขคำสั่งการซิมูเลชั่นที่ gspiceui ตั้งให้เราได้ ซึ่งมีจุดหนึ่งที่ต้องแก้ไขด้วยตนเองแน่ ๆ ก็คือ หากต้องการซิมูเลตแบบอื่น ๆ ที่ไม่ใช่ .op จะต้องสั่ง .op ก่อนเสมอ ไม่เช่นนั้นจะได้ผลเสมือนว่าวงจรไม่ได้รับไฟเลี้ยง&lt;br /&gt;
&lt;br /&gt;
เมื่อทดลองซิมูเลตแบบ Transient (.tr) gspiceui จะอำนวยความสะดวกในการตั้งค่าต่าง ๆ ให้เรา ที่ได้ทดลองคือ&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;ตั้งค่า Vin เป็น 0.5 V ความถี่ 1 kHz (ลอง 1.0 V แล้ว สัญญาณเพี้ยน)&lt;/li&gt;
&lt;li&gt;Start Time = 0 ms&lt;/li&gt;
&lt;li&gt;Stop Time = 10 ms&lt;/li&gt;
&lt;li&gt;Step Time = 10us&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;ผลการทดลองเป็นดังนี้&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_d72Ndtf-05M/S9Q5G4u3tRI/AAAAAAAAAD0/XbbnQWZPM4M/s1600/MiniWatt_SimResult.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/_d72Ndtf-05M/S9Q5G4u3tRI/AAAAAAAAAD0/XbbnQWZPM4M/s400/MiniWatt_SimResult.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
หลังจากลองผิดลองถูกมานาน ผัดวันประกันพรุ่งมาหลายหน ก็ทำได้เสียที ขั้นตอนต่อไปก็จะลองใช้ KiCad ออกแบบแผ่นวงจรพิมพ์สำหรับวงจรนี้&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-7026173438407573822?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vMcE8W-SbLwG2nqYPkXDr7sM-5o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vMcE8W-SbLwG2nqYPkXDr7sM-5o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vMcE8W-SbLwG2nqYPkXDr7sM-5o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vMcE8W-SbLwG2nqYPkXDr7sM-5o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/jdU9rijwiUw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/7026173438407573822/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=7026173438407573822" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/7026173438407573822?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/7026173438407573822?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/jdU9rijwiUw/opensource-13.html" title="การออกแบบวงจรโดยใช้โปรแกรม Opensource ตอนที่ 1/3" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_d72Ndtf-05M/S9CKzGTFMBI/AAAAAAAAADk/Z0CXJ-CxirM/s72-c/SimpleAmp.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2010/04/opensource-13.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IARHg7eyp7ImA9WxFSGUw.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-4120461677946279385</id><published>2010-04-21T21:45:00.000-07:00</published><updated>2010-04-21T21:45:45.603-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-21T21:45:45.603-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Network" /><category scheme="http://www.blogger.com/atom/ns#" term="Internet" /><title>ตั้งค่าเครือข่ายไร้สาย</title><content type="html">แต่ก่อนแต่ไรมา ไม่เคยสนใจจะใช้ระบบเครือข่ายไร้สายของมหาวิทยาลัยเลย สาเหตุเพราะว่าใช้ไม่เป็น :p และการตั้งค่าใน GUI มันใช้ไม่ได้ และเราไม่สามารถสืบทราบได้ว่าที่ใช้ไม่ได้ เพราะการตั้งค่าของเราไม่ถูกต้อง หรือว่าระบบเครือข่ายเองมีปัญหา&lt;br /&gt;
&lt;br /&gt;
แต่เนื่องจากได้ร่วมกิจกรรม &lt;a href="http://www.debianclub.org/minidebcamp-2010"&gt;Thailand Mini DebCamp2010&lt;/a&gt; และเขาทำให้เรามั่นใจว่าระบบเครือข่ายของเขาใช้ได้แน่นอน ก็เลยพยายามศึกษาและหาทางตั้งค่าระบบให้ใช้ได้ดูสักที&lt;br /&gt;
&lt;br /&gt;
คราวนี้จะลองไม่ใช่ GUI ดู เพราะลองจากบรรทัดคำสั่งน่าจะเห็นผลลัพธ์และข้อผิดพลาดได้ดีกว่า คำสั่งที่ต้องใช้ก็คือ&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ifconfig&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;iwlist&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;iwconfig&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dhclient&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;เนื่องจากโน้ตบุ๊กของผมมี Ethernet Card อยู่ 2 ตัวคือ eth0 สำหรับแบบมีสาย และ eth1 สำหรับแบบไร้สาย ก็เลยอยากจะแน่ใจว่า Ethernet Card นั้นเปิดใช้งานอยู่ตัวเดียว จะได้ไม่งงเวลาเกิดข้อผิดพลาดขึ้น ก็ต้องปิด eht0 และเปิด eth1 โดย &lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; ifconfig eth0 down&lt;br /&gt;
&amp;gt; ifconfig eth1 up&lt;/span&gt;&lt;/blockquote&gt;จากนั้นก็ให้ระบบแสดงรายการของเครือข่ายที่เราจะใช้การได้โดย&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; iwlist eth1 scanning&lt;/span&gt;&lt;/blockquote&gt;ระบบจะแสกนหาเครือข่ายไร้สายที่อยู่ในอาณาบริเวณที่ระบบจะรับสัญญาณได้ และแสดงรายละเอียดมาดังตัวอย่าง&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;eth1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Scan completed :&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cell 01 - Address: xx:xx:xx:xx:xx:xx&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ESSID:"&lt;span style="color: red;"&gt;YOURNETWORKNAME&lt;/span&gt;"&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Protocol:IEEE 802.11bg&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Mode:Master&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Frequency:2.437 GHz (Channel 6)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Encryption key:&lt;span style="color: red;"&gt;on&lt;/span&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 48 Mb/s; 54 Mb/s&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Quality=93/100&amp;nbsp; Signal level=-35 dBm&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IE: WPA Version 1&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Group Cipher : TKIP&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Pairwise Ciphers (1) : TKIP&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Authentication Suites (1) : PSK&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Extra: Last beacon: 16ms ago&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;สิ่งที่น่าสนใจในเวลานี้คือชื่อเครือข่ายของเรา ซึ่งจะอ่านจาก ESSID และเครือข่ายที่ว่านี้ต้องการรหัสผ่านหรือไม่ ซึ่งจะอ่านจาก Encryption key ถ้า on ก็แปลว่าเราต้องขอรหัสผ่านจากผู้ดูแลระบบ ถ้า off ก็แสดงว่าเปิดให้ใช้ฟรี (ที่ทำงานผมใช้แบบนี้) ข้อมูล 2 ประการนี้จะช่วยให้เราติดต่อกับเครือข่ายไร้สายได้ โดยใช้คำสั่ง iwconfig ดังนี้&lt;br /&gt;
&lt;blockquote&gt;สำหรับระบบที่ไม่ได้ตั้งรหัสผ่านไว้ ใช้คำสั่ง&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; iwconfig eth1 essid &lt;span style="color: red;"&gt;YOURNETWORNAME&lt;/span&gt; key &lt;span style="color: red;"&gt;off&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote&gt;สำหรับระบบที่ตั้งรหัสผ่านไว้แบบตัวเลขฐานสิบหก ใช้คำสั่ง&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; iwconfig eth1 essid &lt;span style="color: red;"&gt;YOURNETWORKNAME&lt;/span&gt; key &lt;span style="color: red;"&gt;xxxx-xxxx-xxxx-xxxx&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote&gt;สำหรับระบบที่ตั้งรหัสผ่านไว้แบบตัวอักษร (ระบบของทรูที่น้องชายใช้เป็นแบบนี้)&amp;nbsp;  ใช้คำสั่ง&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; iwconfig eth1 essid &lt;span style="color: red;"&gt;YOURNETWORKNAME&lt;/span&gt; key s:&lt;span style="color: red;"&gt;YOURPASSWORD&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;เราสามารถตรวจสอบได้ว่าระบบของเราเชื่อมต่อกับเน็ตเวิร์กสำเร็จหรือไม่โดยใช้คำสั่ง&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; iwconfig eth1&lt;/span&gt;&lt;/blockquote&gt;หากเชื่อมต่อสำเร็จจะเห็นข้อมูลการเชื่อมต่อที่คอนโซล&lt;br /&gt;
&lt;span style="font-size: xx-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;eth1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;IEEE 802.11g&lt;/span&gt;&amp;nbsp; ESSID:"&lt;span style="color: red;"&gt;YOURNETWORKNAME&lt;/span&gt;"&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Mode:Managed&amp;nbsp; Frequency:2.437 GHz&amp;nbsp; Access Point: xx:xx:xx:xx:xx:xx &amp;nbsp; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bit Rate:54 Mb/s&amp;nbsp;&amp;nbsp; Tx-Power=20 dBm&amp;nbsp;&amp;nbsp; Sensitivity=8/0&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Retry limit:7&amp;nbsp;&amp;nbsp; RTS thr:off&amp;nbsp;&amp;nbsp; Fragment thr:off&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Encryption key:&lt;span style="color: red;"&gt;xxxx-xxxx-xxxx-xxxx&lt;/span&gt; &amp;nbsp; Security mode:open&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Power Management:off&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Link Quality=95/100&amp;nbsp; Signal level=-32 dBm&amp;nbsp; Noise level=-91 dBm&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Rx invalid nwid:0&amp;nbsp; Rx invalid crypt:1&amp;nbsp; Rx invalid frag:0&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tx excessive retries:0&amp;nbsp; Invalid misc:0&amp;nbsp;&amp;nbsp; Missed beacon:3&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
แต่หากเชื่อมต่อไม่สำเร็จ ตรงที่ระบบมาตรฐานการเชื่อมต่อ &lt;span style="color: red;"&gt;IEEE 802.11g&lt;/span&gt; จะระบุเป็น &lt;span style="color: red;"&gt;unassociate&lt;/span&gt; แทน&lt;br /&gt;
&lt;br /&gt;
ในกรณีที่ผมเคยประสบมาด้วยตนเองทุกกรณี ระบบเครือข่ายไร้สายจะใช้ระบบ DHCP แจก IP ให้เรา เราสามารถร้องขอ IP จาก DHCP ได้โดย&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; dhclient eth1&lt;/span&gt;&lt;/blockquote&gt;ระบบจะจัดการขอ IP และ DNS ให้เรา ถ้าไม่มีข้อผิดพลาดตอนนี้ก็ถือว่าเราเชื่อมต่อกับระบบเสร็จสิ้นแล้ว ในบางระบบ หากจะเชื่อมต่อกับอินเตอร์เนต ก็ต้องตั้งค่า Proxy ด้วย บางระบบระบุให้เชื่อมต่อโดยตรง ไม่ต้องผ่าน Proxy ก็มี ซึ่งจะแตกต่างกันไปตามแต่ผู้ดูแลระบบจะกำหนด&lt;br /&gt;
&lt;br /&gt;
ในกรณีของผม DNS ที่กำหนดมาให้โดยเครือข่ายของทรู&lt;span style="color: red;"&gt;ที่ระบบของผมรับได้จาก dhclient นั้น&lt;/span&gt; ไม่รู้จักเว็บไซต์บางเว็บเช่นเว็บของทรูเอง (ประหลาดดี) และผมไม่สามารถหาข้อมูลนี้ได้จากเว็บไซต์ของบริษัทได้ จึงต้องใช้บริการของ &lt;a href="http://code.google.com/speed/public-dns/"&gt;Google Public DNS&lt;/a&gt; ซึ่งก็สะดวกดี&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-4120461677946279385?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lkxJmTCi1PXf-F742A1cE7YeMfs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lkxJmTCi1PXf-F742A1cE7YeMfs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lkxJmTCi1PXf-F742A1cE7YeMfs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lkxJmTCi1PXf-F742A1cE7YeMfs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/B2VrcmwPLAk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/4120461677946279385/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=4120461677946279385" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/4120461677946279385?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/4120461677946279385?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/B2VrcmwPLAk/blog-post.html" title="ตั้งค่าเครือข่ายไร้สาย" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2010/04/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EARno9fCp7ImA9WxFSGUw.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-1423243253695784947</id><published>2010-03-16T02:51:00.000-07:00</published><updated>2010-04-21T21:47:27.464-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-21T21:47:27.464-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Network" /><category scheme="http://www.blogger.com/atom/ns#" term="Internet" /><title>ผลพลอยได้จากการเข้าร่วมกิจกรรม Thailand Mini DebCamp 2010</title><content type="html">จากที่เขียนไปก่อนหน้านี้ว่า โน้ตบุ๊กมีปัญหาหลังจากพยายามอัพเกรดให้เป็น sid แล้วทำไม่ได้ต้องแก้ระบบกลับคืน&lt;br /&gt;
&lt;br /&gt;
อาการแรกก็คือ Gnome หาย เหลือไว้แต่ TWM อันนี้ไม่ยาก เพราะ wvdial ยังอยู่ apt-get ยังอยู่ ก็ต่ออินเตอร์เนตด้วย wvdial แล้วก็ Install Gnome โดยใช้ apt-get เสร็จไปอย่างหนึ่ง&lt;br /&gt;
&lt;br /&gt;
วันรุ่งขึ้นยังคาใจ เลยพยายามอัพเกรดระบบให้เป็น squeeze ผลคือ Kernel เดิมมีปัญหากับ udev รุ่นใหม่ แล้วเราไม่รู้เรื่อง ก็เลยพาให้ X มีปัญหาตามไปด้วย อาการคือ X Window หายไปเลย เหลือแต่จอดำ ๆ เปล่า ๆ&lt;br /&gt;
&lt;br /&gt;
เอาล่ะสิ จะ Install ใหม่ มันก็ได้อยู่หรอกนะ แต่ว่ามันน่าจะแก้ได้ใช่ไหมล่ะ ก็เลยคิดวิธีการแก้ไว้อย่างนี้&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;หาทางให้ระบบบูตขึ้นมาใน Text Mode ให้ได้ก่อน ตอนนี้ระบบพยายามจะใช้ X แล้วใช้ไม่ได้อยู่&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;ถ้าบูตเข้า Text Mode ได้แล้ว ค่อยหาทางใช้อินเตอร์เนตของที่ทำงานให้ได้เป็นรายการต่อมา เพราะต้องใช้ apt-get ลงแพคเกจอีกหลายตัว&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;จากนั้นก็ค่อยอัพเกรด Kernel และ Firmware ให้เรียบร้อย&lt;/li&gt;
&lt;li&gt;ถ้าไม่มีปัญหา ก็จะได้อัพเกรดระบบที่เหลือทั้งหมด&lt;/li&gt;
&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;บูตยังไงให้เข้า Text Mode&lt;/span&gt;&lt;br /&gt;
ด่านแรกคือทำยังไงกระบวนการบูตจึงจะหยุดอยู่ที่ Text Console ไม่ไปเรียก GDM ซึ่งรันอยู่บน X เข้าไปดูในอินเตอร์เนต เจออยู่หลายเว็บ แต่ไม่ได้ตอบคำถามที่อยากรู้เลย ส่วนมากจะบอกเพียงว่า จะต้องไปแก้ไขไฟล์ไหนเท่านั้น แต่ตอนนี้ระบบของเราเดี้ยงอยู่ เราจะเข้าไปแก้ไฟล์นั้นไฟล์นี้ได้อย่างไร&lt;br /&gt;
&lt;br /&gt;
สุดท้ายก็ได้พบคำตอบจาก &lt;a href="https://help.ubuntu.com/community/BootOptions"&gt;https://help.ubuntu.com/community/BootOptions&lt;/a&gt; ว่า ตอนที่เครื่องรัน Grub อยู่นั้น เราสามารถใส่ Boot Option ได้ โดยเลือก OS ที่เราต้องการ กด e เพื่อ Edit Boot Command ซึ่งถ้าเป็น Linux หน้าตาของ Boot Command จะคล้าย ๆ อย่างนี้&lt;br /&gt;
&lt;blockquote style="font-family: courier new;"&gt;boot: /boot/vmlinuz-x.x.x-x root=/dev/hdax ro quiet&lt;/blockquote&gt;เราเติม option ว่า text ลงไปข้างท้ายบรรทัดที่ว่าจะได้&lt;br /&gt;
&lt;blockquote style="font-family: courier new;"&gt;boot: /boot/vmlinuz-x.x.x-x root=/dev/hdax ro quiet text&lt;/blockquote&gt;พอแก้ไขเสร็จ กด b ระบบก็จะบูตและกระบวนการก็จะไปหยุดอยู่ที่ Prompt ไม่เรียก GDM ให้เครื่องเราเดี้ยงอีกต่อไป&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;จะใช้เน็ตเวิร์กยังไง&lt;/span&gt;&lt;br /&gt;
ด่านต่อมาก็คือ แต่ก่อนแต่ไรมาเราก็ต่อเน็ตเวิร์กตอนที่อยู่ใน Gnome ทั้งนั้น ไม่เคยต่อโดยใช้บรรทัดคำสั่งเลย แต่มันต้องทำได้สิน่า ลองหาดูก่อน ก่อนอื่นเลยคำสั่งแรก เคยใช้มาบ้างแล้วคือ ifconfig&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-family: courier new;"&gt;sudo ifconfig&lt;br /&gt;
&lt;/span&gt;&lt;/blockquote&gt;เพื่อแสดงรายการเน็ตเวิร์กดีไวซ์ของเราเสียก่อน เครื่องผมมี 2 ตัว พอดีทราบมาก่อนแล้วว่า eth0 คือเน็ตเวิร์กดีไวซ์แบบมีสายที่เราจะใช้นี่แหละ ก็ตั้ง ip ตามที่ admin เคยให้ข้อมูลมาเสียให้เรียบร้อยด้วย&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-family: courier new;"&gt;sudo ifconfig eth0 xxx.xxx.xxx.xxx&lt;br /&gt;
sudo ifconfig eth0 up&lt;br /&gt;
&lt;/span&gt;&lt;/blockquote&gt;อันที่จริง ไม่ต้องสั่ง up ก็ได้ มันจะ up ให้อัตโนมัติ ทดสอบว่าเชื่อมต่อกับเน็ตเวิร์กแล้วโดยการ ping ไปที่ gateway ซึ่งในระบบที่ผมใช้ admin เขาให้รายละเอียดมา ก็ไม่ต้องไปค้นหาให้ลำบาก ปัญหาต่อมาก็คือ เชื่อมต่อกับเน็ตเวิร์กแล้ว แต่ต่อออกข้างนอกไม่ได้เพราะยังไม่ได้บอกระบบว่า DNS ที่เราจะใช้อยู่ที่ไหน จากการค้นอินเตอร์เนตทำให้ทราบว่ารายชื่อของ DNS จะอยู่ในไฟล์ชื่อ /etc/resolve.conf ให้ใช้สิทธิ์ root ไป Edit ไฟล์นี้โดยให้แน่ใจว่ามีบรรทัดที่ระบุ DNS อยู่เช่น&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-family: courier new;"&gt;nameserver xxx.xxx.xxx.xxx&lt;br /&gt;
&lt;/span&gt;&lt;/blockquote&gt;ถ้ามี DNS มากกว่าหนึ่งตัวก็เติมเข้าไปในไฟล์นี้แหละ ทดสอบว่าระบบรู้จักกับ DNS แล้วหรือยังด้วยคำสั่ง&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-family: courier new;"&gt;host google.com&lt;/span&gt;&lt;/blockquote&gt;ควรจะได้รายการ IP Address ของกูเกิลออกมา ถ้าได้มาก็แสดงว่าตั้งค่า DNS เสร็จแล้ว ต่อมาก็ต้องระบุ Proxy Server สำหรับ apt-get ให้เรียบร้อย ให้เปิดไฟล์ /etc/apt/apt.conf ดูด้วยคำสั่ง&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-family: courier new;"&gt;cat /etc/apt/apt.conf&lt;/span&gt;&lt;/blockquote&gt;ก็ได้น่าจะเห็นอะไรคล้าย ๆ ข้างล่างนี้อยู่&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-family: courier new;"&gt;Acquire::http::Proxy "http://proxy.server.name:PORT";&lt;/span&gt;&lt;/blockquote&gt;ถ้าไม่มีก็เติมเข้าไปให้ถูกต้อง ตอนนี้ apt-get ของเราก็พร้อมเชื่อมต่อกับอินเตอร์เนตแล้ว ถ้ายังไม่ได้กำหนด Reprository หรือไม่แน่ใจก็ให้ดูที่ /etc/apt/source.list ก็ได้ สำหรับ Debian ตอนนี้ &lt;a href="http://www.debianclub.org/mirrors"&gt;Debianclub&lt;/a&gt; ประกาศ Reprository มาหลายที่เพื่อความสะดวกของผู้ใช้ ผมอยู่ขอนแก่นก็ใช้ Reprository ของ&lt;a href="http://www.neutron.in.th/"&gt;คุณนิวตรอน&lt;/a&gt; ก็ให้แน่ใจว่ามีบรรทัดอย่างนี้อยู่ใน /etc/apt/source.list&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-family: courier new;"&gt;deb http://neutron.debianclub.com/debian squeeze main contrib non-free&lt;br /&gt;
&lt;/span&gt;&lt;/blockquote&gt;ตอนนี้ apt-get ก็พร้อมแล้ว เมื่อพร้อมแล้วก็ใช้ apt-get อัพเกรด linux-image และ firmware ที่จำเป็นให้เสร็จก่อน อาจใช้ wildcard ช่วย และเลือกจากรายการที่ apt-get แสดงให้ดู เมื่อเสร็จแล้วจึงอัพเกรดทั้งระบบ หรือจะเลือกอัพเกรดเฉพาะ X และ Gnome ก่อน ก็ได้ ต่อไปจะได้เข้าไปแก้ไขระบบใน Gnome ตามที่คุ้นเคยต่อไป&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-1423243253695784947?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jpRh8x0gIEBj2usKKxa812P7gf0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jpRh8x0gIEBj2usKKxa812P7gf0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jpRh8x0gIEBj2usKKxa812P7gf0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jpRh8x0gIEBj2usKKxa812P7gf0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/9V7MbzcldN8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/1423243253695784947/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=1423243253695784947" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/1423243253695784947?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/1423243253695784947?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/9V7MbzcldN8/thailand-mini-debcamp-2010_16.html" title="ผลพลอยได้จากการเข้าร่วมกิจกรรม Thailand Mini DebCamp 2010" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2010/03/thailand-mini-debcamp-2010_16.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YNQH8zeSp7ImA9WxBbFks.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-7907230095548976772</id><published>2010-03-15T06:51:00.000-07:00</published><updated>2010-03-15T09:06:31.181-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-15T09:06:31.181-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Debian" /><title>ได้เข้าร่วม Thailand Mini DebCamp 2010</title><content type="html">ชาว debianclub ได้ร่วมกันเป็นเจ้าภาพ &lt;a href="http://www.debianclub.org/minidebcamp-2010"&gt;Thailand Mini DebCamp 2010&lt;/a&gt; ซึ่งจัดให้มีขึ้น ณ สำนักนวัตกรรมการเรียนการสอน มหาวิทยาลัยขอนแก่น ในระหว่างวันที่ 13 - 19 มีนาคม 2553&lt;br /&gt;&lt;br /&gt;ผมเองก็ลงชื่อไปกับเขาด้วย อันที่จริงก็เกรงใจผู้จัดอยู่ว่าเราเองถือเป็นผู้ใช้ปลายทาง แม้แต่ Build แพคเกจเองยังไม่เคยลองทำสักครั้ง จะไปประชุมอะไรกับเขาได้ แต่หนึ่งในทีมงานผู้จัดงานให้กำลังใจว่า เขามาจัดถึงหน้าบ้านแล้ว และคงไม่ได้มาบ่อย ๆ หากมีโอกาสก็น่าจะเข้าไปร่วมงานกับเขาสักครั้ง จะได้เรียนรู้การทำงานจากคนเก่ง ๆ ได้ ซึ่งก็ขอขอบคุณมา ณ ที่นี้ด้วยที่ให้โอกาส :)&lt;br /&gt;&lt;br /&gt;วันแรก (13 มีนาคม 2553) ก็เป็นการบรรยายภาพรวมของการทำงาน ว่าจะประกอบด้วยอะไรและต้องทำอย่างไรบ้าง แต่เนื่องจากโน้ตบุ๊กของผมมันไม่ค่อยเสถียร เลยไม่กล้าหยิบเครื่องขึ้นมาทดลองทำตามที่เขาแนะนำ แต่ก็จดรายละเอียดไว้ เอาไว้มาอ่านจากอินเตอร์เนตประกอบด้วยในภายหลัง&lt;br /&gt;&lt;br /&gt;วันที่สอง (14 มีนาคม 2553) ตามกำหนดการคือ BSP (Bug Squash Party?) ทั้งห้องเงียบมาก เรียกว่าต่างคนก็ต่างแก้บั๊กที่ตนอยากแก้ตั้งแต่เช้ายันค่ำ เงียบมากจริง ๆ&lt;br /&gt;&lt;br /&gt;ส่วนผมน่ะหรือ? :p มัวแต่เซตอัพระบบเพื่อให้พร้อมใช้ Build แพคเกจต่าง ๆ ก็หมดไปหนึ่งวันแล้ว สาเหตุที่ใช้เวลานานก็คือ&lt;br /&gt;&lt;ol&gt;&lt;li&gt;หาทางต่อระบบของตนเองเข้ากับเน็ตเวิร์กที่เขาเตรียมไว้ให้ นี่ใช้เวลาไปกว่าชั่วโมง&lt;/li&gt;&lt;li&gt;ผมนึกว่าจะช่วยเขา Debug ได้ ระบบของผมต้องเป็น sid (ซึ่งมันต้องเป็นอย่างนี้จริง ๆ หรือเปล่าผมก็ยังไม่ทราบ) จึงอัพเกรดระบบของตนเองจาก lenny เป็น sid นี่ใช้เวลาไปอีกกว่าชั่วโมง&lt;br /&gt;&lt;/li&gt;&lt;li&gt;เกิด Error ขึ้นระหว่างการอัพเกรด! จึงต้องหาทางทำให้ระบบกลับเป็นเหมือนเดิมนี่ก็อีกกว่าชั่วโมง&lt;/li&gt;&lt;li&gt;พอย้อนระบบได้เหมือนเดิมปั๊บ ก็ลองทำตามที่เขาแนะนำทันที คือสร้างระบบ base system เพื่อทดสอบการ build แพคเกจโดยใช้คำสั่ง pbuilder ปรากฏว่า pbuilder ของผมมันจะมี error ที่คนอื่นเขาไม่มีกัน&lt;/li&gt;&lt;li&gt;ก็นึกว่าเป็นเพราะการเซตอัพพวก configuration file ของเราไม่ดี ก็หาทางแก้ ลองผิดลองถูกอยู่เกือบครึ่งวันปรากฏว่า&lt;/li&gt;&lt;li&gt;คนอื่นเขาใช้ pbuilder เวอร์ชั่นสูงกว่าที่เราใช้ ที่เราใช้เป็นเวอร์ชั่นจาก lenny ซึ่งค้นดูในอินเตอร์เนต เขาก็ระบุว่า ถ้าเป็นเวอร์ชั่นนี้ มันก็จะมี error อย่างนั้นแหละ -_- แต่เขามีวิธีแก้ (Work Around) ให้ด้วย ก็เลยใช้ pbuilder สำเร็จ ตอนที่ทุกคนกำลังเก็บของจะกลับบ้านนั่นแหละ&lt;/li&gt;&lt;/ol&gt;เรียกว่าวันนี้ทั้งวัน นอกจากจะไปกินข้าวของเขาฟรี ๆ แล้ว (อร่อยมาก) ยังไปกินแบนด์วิดธ์ของเขาฟรี ๆ อีก บั๊กสักตัวก็แก้ให้เขาไม่ได้ ฮะ ฮะ ฮะ แต่ก็ได้เรียนรู้อะไรใหม่ ๆ ที่คงจะไม่มีโอกาสเรียนรู้ได้เองถ้าอยู่คนเดียวเยอะแยะ นับเป็นประสบการณ์ที่ดี&lt;br /&gt;&lt;br /&gt;ก็ตั้งใจไว้ว่า ในระหว่างนี้ก็จะหัดทำอะไรแบบนี้ให้เก่งขึ้น แล้วหากมีกิจกรรมนี้อีกคราวหน้า จะไม่ให้ผู้จัดเสียข้าวสุกไปเปล่า ๆ แน่นอน...สู้โว้ย!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-7907230095548976772?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cNZaLuASaUdzv9foSc39IPRvQls/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cNZaLuASaUdzv9foSc39IPRvQls/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cNZaLuASaUdzv9foSc39IPRvQls/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cNZaLuASaUdzv9foSc39IPRvQls/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/ExSEJnGl2TM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/7907230095548976772/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=7907230095548976772" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/7907230095548976772?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/7907230095548976772?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/ExSEJnGl2TM/thailand-mini-debcamp-2010.html" title="ได้เข้าร่วม Thailand Mini DebCamp 2010" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2010/03/thailand-mini-debcamp-2010.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcMQ3o6cSp7ImA9WxBVF0o.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-4602309394652796454</id><published>2010-02-21T01:59:00.001-08:00</published><updated>2010-02-21T10:48:02.419-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-21T10:48:02.419-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Python" /><title>หัดเรียนไพธอน</title><content type="html">ผมเคยได้ยินชื่อภาษาไพธอนมานานแล้ว แต่ไม่เคยสนใจเลยว่ามันคืออะไร ด้วยคิด (เอาเอง) ว่ามันเป็นภาษาสำหรับการเขียนโปรแกรมบนฝั่ง Server ของ Internet Application ซึ่งผมก็ไม่เคยคิดว่าจะต้องไปทำงานอะไรทางนั้น&lt;br /&gt;&lt;br /&gt;แต่ที่ทำงานมีรุ่นพี่คนหนึ่ง เขาให้นักเรียนทำโปรเจ็คโดยใช้ภาษาไพธอน เราก็เลยลอง ๆ เลียบ ๆ เคียง ๆ ดูว่ามันคืออะไร ปรากฏว่าเป็นภาษาที่เรียนรู้ได้ง่ายและมีไลบรารีให้ใช้เยอะมาก&lt;br /&gt;&lt;br /&gt;ผมเอง เขียนโปรแกรมครั้งแรกก็ตอน ปวช. เขียน p-robot เล่นกันเองในหมู่เพื่อนฝูง บัดนั้นจนบัดนี้เกือบ 20 ปีแล้วผมยังไม่เคยเขียนโปรแกรมที่รันบนลินุกซ์จริง ๆ จัง ๆ ได้เลยสักที ด้วยว่าอ่าน Tutorial แล้วปฏิบัติตามไม่ได้ เกิดปัญหาแล้วแก้ไขเองไม่ได้&lt;br /&gt;&lt;br /&gt;แต่ไพธอนไม่ใช่อย่างนั้น ผมลองเขียนโปรแกรมตาม Tutorial สัก 2 วันก็เริ่มอ่านโปรแกรมออกแล้ว และเขียนโปรแกรมที่มันมีความหวังว่าจะใช้ประโยชน์ได้จริง ๆ จัง ๆ ไม่ใช่แค่ Hello World&lt;br /&gt;&lt;br /&gt;พอเริ่มเขียนได้ ก็เลยนำไอเดียที่ติดค้างไว้มากว่า 2 ปี มาทดลองดู ผลงานรุ่นแรกก็อยู่ที &lt;a href="http://sites.google.com/site/mkittiphong/my_life_with_linux/mahori/"&gt;http://sites.google.com/site/mkittiphong/my_life_with_linux/mahori&lt;/a&gt; ซึ่งก็เป็นโปรแกรมง่าย ๆ&lt;br /&gt;&lt;br /&gt;ผมดีใจมากเลยนะ ที่เขียนได้ ทั้ง ๆ ที่มันไม่มีอะไรซับซ้อนเท่าไร แต่สำหรับคนที่ค้นหาเส้นทางมานาน และเพิ่งเจอเส้นทางที่เดินได้เนี่ย มันคลี่คลายปมอะไรในใจไปเยอะเลย&lt;br /&gt;&lt;br /&gt;เป็นความรู้สึกผสมผสานกัน ทั้งดีใจที่ได้เจอไพธอน และเสียใจที่เพิ่งได้เจอไพธอน&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-4602309394652796454?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IkTRNT7KI8jfe16ExeQKdG4-u9E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IkTRNT7KI8jfe16ExeQKdG4-u9E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IkTRNT7KI8jfe16ExeQKdG4-u9E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IkTRNT7KI8jfe16ExeQKdG4-u9E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/21vm1gAodeY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/4602309394652796454/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=4602309394652796454" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/4602309394652796454?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/4602309394652796454?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/21vm1gAodeY/blog-post.html" title="หัดเรียนไพธอน" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2010/02/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UEQHwzfSp7ImA9WxBbF0Q.&quot;"><id>tag:blogger.com,1999:blog-4072142101387605096.post-5259068138206094982</id><published>2009-12-17T23:08:00.000-08:00</published><updated>2010-03-16T21:13:21.285-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-16T21:13:21.285-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Debian" /><title>Look! It's alive! (Debian-Live USB Part I)</title><content type="html">เมื่อต้นเดือนที่ผ่านมา ห้างเซนทรัลพลาซ่าได้เปิดตัวที่ขอนแก่น ผมเองก็พยายามไปเซนทรัลในช่วงสัปดาห์แรกอยู่ 2 - 3 หนเหมือนกัน แต่ไปไม่เคยถึงที่สักที ต้องกลับรถก่อน พอดีว่าช่วงนั้นมีงานไหมพอดี รถติดชะมัดยาด&lt;br /&gt;
&lt;br /&gt;
หลังจากนั้นมาสักสัปดาห์หนึ่ง คนเริ่มซาลงก็เลยไปเยี่ยมชมดู ก็ตามความคาดหมายครับ ยิ่งใหญ่อลังการมาก โดยเฉพาะเรื่องร้านอาหาร มาเปิดให้บริการกันเยอะมาก เข้าใจว่าเขาคงมองเห็นช่องว่างการตลาด และกำลังซื้อของคนในจังหวัด&lt;br /&gt;
&lt;br /&gt;
นอกจากร้านอาหารแล้วอีกอย่างหนึ่งที่ประทับใจก็คือร้านหนังสือ ก็ไม่เยอะหรอกนะ แต่ที่จะมารวมอยู่ที่เดียวกันหลาย ๆ ร้านอย่างนี้เดิมก็ไม่มีมาก่อน มีทั้ง ซีเอ็ดฯ ร้านนายอินทร์ B2S และ เอเซียบุ๊คส์ และที่ร้านเอเซียบุ๊คส์นี้เองที่ผมได้เห็นนิตยสารต่างประเทศ Linux Users Magazine (ผมอาจจะจำชื่อผิด - ขออภัย) ในฉบับนี้ท่านแถม DVD Easy Peasy Linux ก็สนใจขึ้นมา ก็นึก ๆ อยู่ว่าจะลองซื้อมาอ่าน แต่ราคาเกินที่จะจ่ายไหวครับ นิตยสารฉบับเดียวเกือบ 500 บาท ถ้าสัก 200 - 300 ยังพอซื้อไหว&lt;br /&gt;
&lt;br /&gt;
กลับบ้านมาก็เลยเข้ามาค้นดูว่าเจ้า Easy Peasy Linux นี้คืออะไร ก็ได้ความว่าเป็นอนุพันธ์ของ Ubuntu ที่จัดให้เล็กลงเพื่อให้ลงใน Netbook ได้ ชื่อเดิมของมันคือ Ubuntu Eee พอรู้จักเจ้าตัวนี้ก็เกิดสนใจดิสตริบิวชั่นจำพวกขนาดเล็ก (Minimalist) และพวก Live ขึ้นมาเพราะที่บ้านแฟนใช้วินโดว์อยู่ หากจำเป็นต้องใช้เครื่องของเขาเราก็ไม่อยากจะไปแตะฮาร์ดดิสก์ของเขา เผื่อพลาดพลั้งขึ้นมาข้อมูลเขาหายไปด้วยจะลำบาก ถ้าใช้แบบ Live ก็ไม่ต้องลงโปรแกรม ไม่ต้องยุ่งกับฮาร์ดดิสก์เขา และเนื่องจากผมใช้ Debian อยู่ ตัวเลือกแรกสำหรับผมก็คือ Debian-Live นี่เอง&lt;br /&gt;
&lt;br /&gt;
แหล่งข้อมูลที่ค้นเจอเรียงตามลำดับที่พบคือ &lt;a href="http://www.pendrivelinux.com/debian-live-flash-drive-install-from-windows/"&gt;Pendrivelinux.com&lt;/a&gt; แต่เป็นการสร้างอิมเมจของเดเบียนบนวินโดว์ซึ่งยังไม่ใช่สิ่งที่ต้องการ แต่ก็มีประโยชน์มาก แหล่งถัดมาซึ่งจริง ๆ น่าจะพบก่อนด้วยซ้ำก็คือเว็บไซต์โปรเจ็คของ &lt;a href="http://debian-live.alioth.debian.org/"&gt;Debian-Live&lt;/a&gt; เองซึ่งมีคู่มือพร้อม เมื่อมีข้อมูลแล้วก็เริ่มลองผิดลองถูกกันได้&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;สิ่งที่ต้องมี&lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;เครื่องที่จะใช้สร้างอิมเมจของ Live นี้เรียกว่าโฮสต์ โฮสต์จะต้องมีแพคเกจ live-helper ติดตั้งอยู่ ถ้ายังไม่มีก็ใช้ Synaptic ช่วยในการติดตั้งก็ได้&lt;/li&gt;
&lt;li&gt;เนื่องจากการสร้างจะต้องโหลดแพคเกจทั้งหลายจาก Repository ดังนั้นระบบจึงจะต้องติดต่อกับอินเตอร์เนตได้&lt;/li&gt;
&lt;li&gt;พื้นที่ในฮาร์ดดิสก์เพื่อใช้เก็บไฟล์ที่จำเป็นในระหว่างการสร้างอิมเมจและตัวอิมเมจเอง จากที่ทดลองทำผมต้องใช้พื้นที่ไม่น้อยกว่า 3 GB สำหรับการสร้างอิมเมจแบบน้อยที่สุดที่ผมรับได้ขนาด 700 MB&lt;/li&gt;
&lt;li&gt;และแน่นอน ตัว USB Drive ความจุไม่น้อยกว่าขนาดของอิมเมจที่สร้างได้&lt;/li&gt;
&lt;li&gt;(ถ้ามีก็ดี) แพคเกจ qemu พร้อมกับตัวเร่งความเร็วของมัน (ถ้ามี) และ RAM ไม่น้อยกว่า 128 MB สำหรับการทดลองบูตอิมเมจที่สร้างได้ในอีมูเลเตอร์ (Run Linux within Linux) จะได้ไม่ต้องรีบูตเครื่องเพื่อทดสอบบ่อย ๆ&lt;/li&gt;
&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;สิ่งที่ต้องทำ (แบบคร่าว ๆ)&lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;สร้างไดเร็คทอรีสำหรับสร้างและเก็บอิมเมจและไฟล์อื่น ๆ ที่ live-helper จะสร้างขึ้นมา และเข้าไปในไดเร็คตอรีนั้น&lt;/li&gt;
&lt;li&gt;แปลงร่างเป็น root เสีย ผมคิดว่าระบบของท่านจะใช้อะไรก็น่าจะได้ ไม่ว่าจะเป็น su sudo หรือว่า fakeroot แต่ที่ผมใช้คือ su ซึ่งที่มาของมันจริง ๆ ก็คือผมใช้ sudo ไม่เป็น ฮ่า ฮ่า ฮ่า&lt;/li&gt;
&lt;li&gt;เรียกคำสั่ง lh_config -b usb-hdd -p gnome-core ขึ้นมา คำสั่งนี้จะสร้างไดเร็คทอรีและไฟล์ที่ตั้งค่าต่าง ๆ ขึ้น ตัวเลือก -b usb-hdd เป็นการระบุว่าอิมเมจที่เราต้องการนั้นจะเป็นอิมเมจสำหรับ usbdrive ซึ่งชื่อของมันจะเป็น binary.img โดยอัตโนมัติ และตัวเลือก -p gnome-core จะใช้ Gnome Desktop แบบเฉพาะตัวหลัก (ตัวเลือกอื่น ๆ ขอบันทึกทีหลัง)&lt;/li&gt;
&lt;li&gt;เรียกคำสั่ง lh_build ขึ้นมา คำสั่งนี้จะโหลดแพคเกจที่จำเป็นต่าง ๆ มาและสร้างระบบไฟล์ของลินุกซ์ขึ้นและแปลงระบบไฟล์เป็นอิมเมจในที่สุด ขั้นตอนนี้อาจใช้เวลาค่อนข้างนานเพราะ script จะโหลดแพคเกจจาก Repository มา จะใช้เวลานานเท่าใดก็แล้วแต่ความเร็วในการติดต่อนั่นแหละครับ หลังจากโหลดแพคเกจมาแล้วก็ยังต้องใช้เวลาสร้างไบนารีอิมเมจอีก ระบบของผม (Pentium M 1.5 GHz + LAN Connection) ใช้เวลารวมประมาณ 2 - 3 ชั่วโมงครับ เคยลองรัน lh_build ตอนต่อกับโมเดมที่ความเร็ว 480kbps ก็ใช้เวลาข้ามคืนครับ&lt;/li&gt;
&lt;li&gt;เมื่อได้อิมเมจมาแล้ว เราสามารถลองบูตอิมเมจนี้ได้โดยไม่ต้องรีบูตเครื่องโดยใช้ qemu binary.img ผลที่ได้เป็นดังรูป&lt;/li&gt;
&lt;/ol&gt;&lt;a href="http://3.bp.blogspot.com/_d72Ndtf-05M/Sy_I5jQPfPI/AAAAAAAAABc/x9cqdarkhw4/s1600-h/Screenshot-1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5417769767791459570" src="http://3.bp.blogspot.com/_d72Ndtf-05M/Sy_I5jQPfPI/AAAAAAAAABc/x9cqdarkhw4/s320/Screenshot-1.png" style="cursor: pointer; display: block; height: 240px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;เมื่อมั่นใจว่าอิมเมจที่สร้างใช้ได้ ก็เขียนลง UsbDrive ได้เลย แต่ต้องเป็น UsbDrive ที่ว่าง ๆ นะครับ ข้อมูลสำคัญให้สำเนาเก็บไว้ให้เรียบร้อยก่อน เพราะข้อมูลมันจะถูกลบทิ้งไปทั้ง Drive เลย&lt;br /&gt;
&lt;br /&gt;
เขียนอิมเมจลงไดรว์โดยใช้คำสั่ง&lt;br /&gt;
&lt;blockquote&gt;#dd if=binary.img of=/dev/sdx&lt;/blockquote&gt;เมื่อ /dev/sdx คือดีไวซ์ของ UsbDrive ของเรา ในกรณีของผมคือ /dev/sda ในกรณีของท่านอื่น ๆ อาจจะต่างกันไป เช่น /dev/sdb เป็นต้น &lt;span style="color: red;"&gt;กระบวนการนี้อันตรายมากสำหรับคนที่ไม่แน่ใจว่าตนกำลังทำอะไรอยู่ เพราะหากเป็นระบบที่ใช้ Serial HDD บางทีฮาร์ดดิสก์ของท่านอาจจะเป็น /dev/sda ก็ได้ แล้วคำสั่งข้างบนก็จะไปทำลายข้อมูลในฮาร์ดดิสก์ของท่านจนหมด กู้ไม่ได้&lt;/span&gt; เพราะฉะนั้นขอให้ทำด้วยความระมัดระวังนะครับ&lt;br /&gt;
&lt;br /&gt;
เราอาจจะทราบดีไวซ์ของ UsbDrive ของเราได้โดยใช้คำสั่ง&lt;br /&gt;
&lt;blockquote&gt;#fdisk -l&lt;/blockquote&gt;ภายใต้สิทธิ์ของ root ให้มองหาดีไวซ์มีความความจุเท่ากับ UsbDrive ของเรา อันนั้นน่าจะเป็นอันที่ถูกต้อง ถ้ายังไม่แน่ใจ ให้เอา UsbDrive ออก แล้วสั่งใหม่ ดีไวซ์ไหนหายไปดีไวซ์นั้นคือ UsbDrive ของเรานั่นเอง เมื่อบันทึกลง UsbDrive ได้แล้วก็ลองรีบูตเครื่องและบูตจาก USB ดู น่าจะเข้าสู่ live boot ได้&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
ในระหว่างการลองผิดลองถูกครั้งนี้ก็ได้เรียนรู้อะไรน่าสนใจหลายอย่าง บางอย่างลองแล้ว แต่มันยาว เลยยังไม่บันทึก บางอย่างก็ไม่ยาวนักแต่ยังไม่ได้ลองก็เลยยังไม่บันทึก หากมีเวลาจะกลับมาบันทึกเรื่องน่าสนใจเหล่านั้นในเร็ว ๆ นี้&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4072142101387605096-5259068138206094982?l=kt-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HxPEi722F890KhZWNA9ESoAEw44/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HxPEi722F890KhZWNA9ESoAEw44/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HxPEi722F890KhZWNA9ESoAEw44/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HxPEi722F890KhZWNA9ESoAEw44/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/XhSRG/~4/qNMZVvSa3iY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kt-linux.blogspot.com/feeds/5259068138206094982/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4072142101387605096&amp;postID=5259068138206094982" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/5259068138206094982?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4072142101387605096/posts/default/5259068138206094982?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/XhSRG/~3/qNMZVvSa3iY/look-its-alive-debian-live-usb.html" title="Look! It's alive! (Debian-Live USB Part I)" /><author><name>Kittiphong Meesawat</name><uri>https://profiles.google.com/117606891998045558956</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_d72Ndtf-05M/Sy_I5jQPfPI/AAAAAAAAABc/x9cqdarkhw4/s72-c/Screenshot-1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kt-linux.blogspot.com/2009/12/look-its-alive-debian-live-usb.html</feedburner:origLink></entry></feed>

