<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3354579053058900072</id><updated>2024-09-10T21:53:56.586+07:00</updated><category term="linux"/><category term="debian"/><category term="openvz"/><category term="others"/><category term="gpg"/><category term="ubuntu"/><category term="vi"/><category term="vim"/><category term="virtualization"/><category term="a2dp"/><category term="ais"/><category term="alfresco"/><category term="android"/><category term="apn"/><category term="apt"/><category term="apt-ftparchive"/><category term="bluetooth"/><category term="ddrescue"/><category term="django"/><category term="dpkg"/><category term="ecm"/><category term="epiphany"/><category term="esp8266"/><category term="ftp"/><category term="gddrescue"/><category term="imagemagick"/><category term="iot"/><category term="laos"/><category term="lucid"/><category term="lxc"/><category term="mac"/><category term="memo"/><category term="nfs"/><category term="nodemcu"/><category term="package"/><category term="perl"/><category term="proftpd"/><category term="python"/><category term="recovery"/><category term="replace"/><category term="repo"/><category term="rhel6"/><category term="screenshot"/><category term="search"/><category term="ssh"/><category term="supervisord"/><category term="travel"/><category term="unetbootin"/><category term="unix socket"/><category term="เพลง"/><title type='text'>พื้นที่ชายฝั่งทะเล</title><subtitle type='html'>COASTAL AREA</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>49</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-3093621122048788097</id><published>2017-08-17T11:47:00.001+07:00</published><updated>2017-08-17T11:47:32.438+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="django"/><title type='text'>Override default Django forms attribute</title><content type='html'>&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;งานที่ใช้อยู่ปัจจุบัน คือ สร้าง Form สำหรับ Register โดยใช้ ModelForm ที่ inherit มาจาก class อื่น&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;ปัญหาคือ เมื่อ render html form ออกมา พวกค่าต่างๆ เช่น help_text จะใช้จาก default ที่ตั้งมาจาก class แม่ และแท็ค input จะไม่มี class กำหนดมา ซึ่งอยากใช้ form-control ของ bootstrap&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;ลองไปค้นๆ ดู ก็เจอคนทำ เลยเอามาบล็อกเก็บไว้เสียหน่อย&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;/span&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;
&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;class UserRegistrationForm(RegistrationFormUniqueEmail):&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; def __init__(self, *args, **kwargs):&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; super(UserRegistrationForm, self).__init__(*args, **kwargs)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.fields[&#39;password1&#39;].help_text = &quot;My new help_text&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.field[&#39;username&#39;].widget.attrs.update({&#39;class&#39;: &#39;form-control&#39;})&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/3093621122048788097/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/3093621122048788097' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/3093621122048788097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/3093621122048788097'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2017/08/override-default-django-forms-attribute.html' title='Override default Django forms attribute'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-5658748579129253584</id><published>2017-04-08T12:58:00.000+07:00</published><updated>2017-04-08T12:58:38.762+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="a2dp"/><category scheme="http://www.blogger.com/atom/ns#" term="bluetooth"/><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>แก้ไขปัญหา เสียงไม่ออกไปที่ลำโพง bluetooth บน Debian</title><content type='html'>&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;ปัญหาคือ สามารถ pair กับลำโพงได้ แต่ไม่มี device, audio profile ใหม่ขึ้นมาในระบบให้เลือก&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;search ไปมาก็เจอวิธีแก้ใน wiki ของ Debian เอง วิธีการมีดังนี้&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;ติดตั้ง package เหล่านี้&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;apt-get install &lt;b&gt;pulseaudio pulseaudio-module-bluetooth pavucontrol bluez-firmware&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;จากนั้น restart service bluetooth และ pulseaudio&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;service bluetooth restart&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;killall pulseaudio&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;ใช้โปรแกรมจัดการ bluetooth ตัวไหนก็ได้ pair กับอุปกรณ์ตามปกติ&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;เปิดตัวจัดการเสียงของ pulseaudio โดยใช้โปรแกรมเช่น&amp;nbsp;&lt;b&gt;pavucontrol &lt;/b&gt;ก็จะเห็น device ของลำโพงปรากฏขึ้นมาแล้ว&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;b&gt;REF:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;a href=&quot;https://wiki.debian.org/BluetoothUser/a2dp&quot;&gt;https://wiki.debian.org/BluetoothUser/a2dp&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/5658748579129253584/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/5658748579129253584' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/5658748579129253584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/5658748579129253584'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2017/04/bluetooth-debian.html' title='แก้ไขปัญหา เสียงไม่ออกไปที่ลำโพง bluetooth บน Debian'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-3929008168644141494</id><published>2016-10-05T12:21:00.002+07:00</published><updated>2017-05-30T10:52:58.210+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="supervisord"/><title type='text'>Supervisord : Adding new program</title><content type='html'>&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;ต้องการเพิ่ม program เข้าไปใน supervisord และ start เพื่อเริ่มใช้งาน สามารถทำได้ดังนี้&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;เพิ่ิมไฟล์ .conf เข้าไปที่ /etc/supervisor/conf.d/&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;ใช้คำสั่ง sudo supervisorclt reread&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;ตรงนี้จะบอกว่า มีโปรแกรมใหม่ขึ้นมาให้ใช้ (แต่จะยังเพิ่มเข้าไปจริงๆ)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;ใช้คำสั่ง sudo supervisorclt update&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;หลังจากคำสั่งนี้ supervisord จะ add เข้าไป และเริ่มใช้งาน program ใหม่ทันที เช็คโดยใช้ sudo supervisorctl status&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;REF:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;a href=&quot;http://www.onurguzel.com/supervisord-restarting-and-reloading/&quot;&gt;http://www.onurguzel.com/supervisord-restarting-and-reloading/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/3929008168644141494/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/3929008168644141494' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/3929008168644141494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/3929008168644141494'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2016/10/supervisord-adding-new-program.html' title='Supervisord : Adding new program'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-9112074644223589495</id><published>2016-07-21T13:16:00.002+07:00</published><updated>2016-07-21T13:16:22.795+07:00</updated><title type='text'>Set default protocol for git repository using HTTPS instead of GIT</title><content type='html'>&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;In any git repository&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;add these line to .gitconfig file&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;[url &quot;&lt;a href=&quot;https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2F&amp;amp;sa=D&amp;amp;sntz=1&amp;amp;usg=AFQjCNHReqsuKT6C86HcgL4TbSevF24rxQ&quot;&gt;https://github.com/&lt;/a&gt;&quot;]&lt;br /&gt;insteadOf = git://github.com/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[url &quot;&lt;a href=&quot;https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2F&amp;amp;sa=D&amp;amp;sntz=1&amp;amp;usg=AFQjCNHReqsuKT6C86HcgL4TbSevF24rxQ&quot;&gt;https://github.com/&lt;/a&gt;&quot;]&lt;br /&gt;insteadOf = git@github.com:&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/9112074644223589495/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/9112074644223589495' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/9112074644223589495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/9112074644223589495'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2016/07/set-default-protocol-for-git-repository.html' title='Set default protocol for git repository using HTTPS instead of GIT'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-2159347391377311787</id><published>2016-04-15T03:44:00.001+07:00</published><updated>2016-04-15T03:44:14.840+07:00</updated><title type='text'>[Ubuntu/Debian] วิธี downgrade package</title><content type='html'>&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;เนื่องจากต้องการติดตั้งระบบตัวนึง ซึ่งใน ansible จะรัน playbook เริ่มต้นตัวที่เป็น bootstrap เพื่อเตรียมติดตั้งจริงต่อไป พบว่า ต้องมีการเพิ่ม repository และ ติดตั้งแพคเกจเพิ่มเติม ดูเหมือนไม่มีอะไรใช่ไหม?&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;ปัญหาคือ แพคเกจที่ต้องการจะลง ดันบังคับต้องเป็นเวอร์ชั่นที่ต่ำกว่าที่อยู่ในระบบ ซึ่งก็คือ python2.7&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;ปัญหาถัดมาคือ ถ้าจะลบออกมันจะลากญาติโยมที่พึ่งพา(depend) python2.7 ลงไปด้วย เพราะงั้นทำไงดี&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;วิธีแก้ง่ายๆ หลังจากหาดูมาตั้งนานนมคือ ใช้ aptitude !&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;ใช้ยังไง? แบบนี้เลย บอกมันไปว่าจะลบทิ้งนะ&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;b&gt;$ sudo aptitude remove python2.7&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;เท่านั้นล่ะ มันจะร่ายยาวมาเลยว่าอะไรจะเกิดขึ้นบ้าง สิ่งที่ต้องทำคือ กด n ไปเรื่อยๆ คือให้มัน resolve ให้ใหม่นั่นล่ะ จนกว่าจะเจอว่าให้มัน downgrade ไปยังเวอร์ชั่นที่ต้องการ&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;แค่นี้ก็เรียบร้อย ไม่กระทบกับแพคเกจใดๆ&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/2159347391377311787/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/2159347391377311787' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/2159347391377311787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/2159347391377311787'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2016/04/ubuntudebian-downgrade-package.html' title='[Ubuntu/Debian] วิธี downgrade package'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-5843762214722046609</id><published>2016-03-07T09:55:00.000+07:00</published><updated>2016-03-07T09:55:37.541+07:00</updated><title type='text'>Unattended security update in Debian</title><content type='html'>&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;ในระบบ package ปกติเช่น apt ของ Debian, Ubuntu เราสามารถติดตั้ง software ใหม่ๆ หรือ security update ได้อยู่แล้วไม่ว่าจะผ่าน command line หรือ GUI&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;ทีนี้หากเราได้ดูแล server อยู่เป็นจำนวนนึง การรีโมทเข้าไปติดตั้งทีละเครื่องคงไม่สนุกแน่&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;ในบทความนี้จะมาทำให้ server เรา security update อย่างสม่ำเสมอแบบอัตโนมัติกัน&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;สิ่งที่ต้องเตรียม&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;- ติดตั้งแพคเกจที่จำเป็น&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;# apt-get install unattended-upgrades apt-listchanges&lt;br /&gt;- คอนฟิคไฟล์&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;ไฟล์แรกจะอยู่ที่&amp;nbsp;&lt;span style=&quot;background-color: white; line-height: 19.5px; white-space: pre;&quot;&gt;/etc/apt/apt.conf.d/50unattended-upgrades ซึ่งค่าที่ตั้งมา 
ก็สามารถนำมาใช้ได้เลย &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;อีกไฟล์คือ&amp;nbsp;&lt;span style=&quot;background-color: #f5f6f7; line-height: 2em; white-space: pre;&quot;&gt;/etc/apt/apt.conf.d/20auto-upgrades ถ้าไม่มีไฟล์นี้ 
สามารถสร้างขึ้นมาใหม่ได้เลย หรือใช้คำสั่ง&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f5f6f7; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; line-height: 2em; white-space: pre;&quot;&gt;sudo dpkg-reconfigure -plow unattended-upgrades ก็ได้เช่นกัน 
จากนั้นให้ไขไฟล์ดังนี้&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;APT::Periodic::Update-Package-Lists &quot;1&quot;;&lt;br /&gt;&lt;br /&gt;APT::Periodic::Unattended-Upgrade &quot;1&quot;;
&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;REF:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;a href=&quot;https://wiki.debian.org/UnattendedUpgrades&quot;&gt;https://wiki.debian.org/UnattendedUpgrades&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/5843762214722046609/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/5843762214722046609' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/5843762214722046609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/5843762214722046609'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2016/03/unattended-security-update-in-debian.html' title='Unattended security update in Debian'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-7512696366425266209</id><published>2016-02-28T11:40:00.001+07:00</published><updated>2016-02-28T11:40:25.019+07:00</updated><title type='text'>ls command with color in black-background terminal in Mac OSX</title><content type='html'>&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;ตอนนี้ Terminal ใน Mac ที่ใช้อยู่คือ &lt;a href=&quot;http://iterm2.com/&quot; target=&quot;_blank&quot;&gt;iTerm2&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;ทีนี้สีพื้นหลังที่ใช้อยู่เนี่ยมันเป็นสีดำ เวลาสั่ง ls มันจะมีบางประเภทที่กลืนไปกับสีพื้นหลัง คือมันไม่เด่น&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;วิธีแก้คือ ให้เพิ่มค่าต่างๆ เหล่านี้ไปที่ไฟล์ ~/.profile หรือ ~/.bash_profile (ใช้อันนี้ล่ะ)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;alias ls=&quot;ls -G&quot; # อันนี้คือทำให้มันแสดงผลเป็นสีทุกครั้งที่ ls&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;#export LSCOLORS=gxBxhxDxfxhxhxhxhxcxcx # สีนี้ก็ใช้ได้&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;export LSCOLORS=ExGxBxDxCxEgEdxbxgxcxd # อันนี้โฟลเดอร์จะสีน้ำเงินเข้ม&lt;/span&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;สั่ง source ~/.bash_profile แล้วลอง ls ดู ก็จะโอเคขึ้นละ&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;ref:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://apple.stackexchange.com/questions/33677/how-can-i-configure-mac-terminal-to-have-color-ls-output&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;http://apple.stackexchange.com/questions/33677/how-can-i-configure-mac-terminal-to-have-color-ls-output&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/7512696366425266209/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/7512696366425266209' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/7512696366425266209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/7512696366425266209'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2016/02/ls-command-with-color-in-black.html' title='ls command with color in black-background terminal in Mac OSX'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-4303590913838743697</id><published>2015-08-23T22:07:00.001+07:00</published><updated>2015-08-23T22:12:29.408+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="esp8266"/><category scheme="http://www.blogger.com/atom/ns#" term="iot"/><category scheme="http://www.blogger.com/atom/ns#" term="nodemcu"/><title type='text'>Flashing NodeMCU firmware on Mac OS X</title><content type='html'>&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;เรื่องของเรื่องคือได้ยินชื่อเสียงของ NodeMCU มานาน เลยสั่งมาลองเล่นบ้าง แต่ไม่เคยมีประสบการณ์กับการเล่นกับ IoT มาก่อน ค่อนข้างจะมั่วอยู่มากเหมือนกัน&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;ปัญหาที่เจอคือแฟลชแล้ว ไม่มี lua prompt ขึ้นมา แต่ใช้ Arduino IDE ต่อเข้าแล้ว upload script (ที่ไม่ใช่ lua) แล้วดันรันได้ งมไปงมมาเลยได้วิธีมาแชร์นี้ล่ะ&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
ตัวที่สั่งมา หน้าตาเป็นอย่างนี้&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikfzmxKrSMVfa19ICFo2HA3oVMlH7zGYD4S7OGeqpnIfpGThbF6QPyAEMUY9yX4hG2Xj7HXKD4btp8V7Smp7a4LvdZoYt-6S0myzsDuMx47X-WXvYgCULFCMCPqHDiPa-usXwFI5YflcM/s1600/IMG_20150823_213031.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;1&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikfzmxKrSMVfa19ICFo2HA3oVMlH7zGYD4S7OGeqpnIfpGThbF6QPyAEMUY9yX4hG2Xj7HXKD4btp8V7Smp7a4LvdZoYt-6S0myzsDuMx47X-WXvYgCULFCMCPqHDiPa-usXwFI5YflcM/s320/IMG_20150823_213031.jpg&quot; width=&quot;236&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD42oj1SPIbJnt-WV0EQw_wyugDKPeS_SNBsgDxfJl3M3WkHL6o5Tz_LJh_BhyUoCalECrtoVLb41c_EctCjqGT492eClZ9ezphj737NH6G2lqYXUVMn_6smTOZZ4D6nDJBHuRiT6v-TE/s1600/IMG_20150823_213022.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;1&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD42oj1SPIbJnt-WV0EQw_wyugDKPeS_SNBsgDxfJl3M3WkHL6o5Tz_LJh_BhyUoCalECrtoVLb41c_EctCjqGT492eClZ9ezphj737NH6G2lqYXUVMn_6smTOZZ4D6nDJBHuRiT6v-TE/s320/IMG_20150823_213022.jpg&quot; width=&quot;236&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
ที่เคยอ่านๆ มาคือ &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Windows&lt;/span&gt; ก็จะมีเครื่องมือช่วยในการแฟลชง่ายๆ เลย&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
ในแมคก็มีเหมือนกันแต่ใช้ผ่าน &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;command line&lt;/span&gt; แทน&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
แต่ก่อนจะแฟลช ต้องเตรียมเครื่องมือก่อน ดังนี้&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;ติดตั้ง &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;CP2102 USB to UART bridge&lt;/span&gt; เหมือนเป็น &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;driver&lt;/span&gt; เวลาเสียบเข้าเครื่องแล้วจะมองเห็นเป็น &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;device&lt;/span&gt; ชนิดนึง โหลดได้ &lt;a href=&quot;https://www.silabs.com/Support%20Documents/Software/Mac_OSX_VCP_Driver.zip&quot; target=&quot;_blank&quot;&gt;ที่นี่&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;ESPTool เป็น command line tool สำหรับแฟลช firmware ลง esp8266 วิธีติดตั้ง ใช้คำสั่งดังนี้ใน terminal&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;code&gt;git clone https://github.com/themadinventor/esptool.git&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;code&gt;cd esptool&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&lt;span style=&quot;font-size: small;&quot;&gt;sudo python setup.py install&lt;/span&gt; &lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;nodemcu-firmware โหลดตัวล่าสุดมาเลยก็ได้ (ในขณะนี้คือ &lt;a href=&quot;https://github.com/nodemcu/nodemcu-firmware/releases/download/0.9.6-dev_20150704/nodemcu_float_0.9.6-dev_20150704.bin&quot; target=&quot;_blank&quot;&gt;0.9.6-dev&lt;/a&gt; ) สมมติว่าไฟล์ชื่อ nodemcu_float_0.9.6-dev_20150704.bin&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
เมื่อเตรียมพร้อมแล้ว มาเริ่มแฟลชกัน โดยวิธีการมีดังนี้&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;เสียบสาย micro usb เข้ากับ esp8266 แล้วเช็คดูว่ามองเห็น device รึเปล่า แบบในรูป&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;เช็คว่าเมื่อเสียบแล้วได้ device ชื่ออะไร อย่างที่ใช้อยู่จะเป็น device อยู่ที่ /dev/tty.SLAB_USBtoUART&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;ถ้าได้ device ขึ้นมาแล้ว สามารถใช้คำสั่งนี้ใน terminal ได้เลย &lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;esptool.py -b 115200 -p /dev/tty.SLAB_USBtoUART write_flash --flash_mode dio 0x00000 nodemcu_float_0.9.6-dev_20150704.bin (spec baud rate ของตัวนี้เขียนไว้ที่ 9600 เท่าที่ลองคือสำหรับตอนที่ใช้โปรแกรมอย่าง minicom, ESPlorer ต่อเข้าไป แต่เวลาแฟลชใช้ buad rate นี้ได้ ลองแล้ว เร็วด้วยนะ)&lt;/span&gt;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXa_SmK48WelR06TI9Uwomh__0GpwZ5rI6I5jgTPgzkJuF38E4DTXvU40yxvI2dkp-u17gRjT2QITta2sHH2O4HlxA0e7KDDdeUbnXC3GsCdmzveijEzwAaMkkudiCBTzb10e1lEGRDXU/s1600/Screen+Shot+2558-08-23+at+9.48.56+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;1&quot; height=&quot;192&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXa_SmK48WelR06TI9Uwomh__0GpwZ5rI6I5jgTPgzkJuF38E4DTXvU40yxvI2dkp-u17gRjT2QITta2sHH2O4HlxA0e7KDDdeUbnXC3GsCdmzveijEzwAaMkkudiCBTzb10e1lEGRDXU/s320/Screen+Shot+2558-08-23+at+9.48.56+PM.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;ขึ้นแบบนี้ถือว่าถูก&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;แล้วก็รอจนเสร็จ ก็จะสามารถใช้งาน NodeMCU พร้อมกับเขียนสคริปต์โดยใช้ภาษา lua ได้ มี lua prompt ขึ้นมาให้เสร็จสรรพ&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div style=&quot;text-align: right;&quot;&gt;
&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;REF:&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;/span&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;a href=&quot;http://thaiopensource.org/%E0%B8%A1%E0%B8%B2-flash-firmware-%E0%B9%83%E0%B8%AB%E0%B9%89-esp8266-%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-esptool-%E0%B8%81%E0%B8%B1%E0%B8%99/&quot; target=&quot;_blank&quot;&gt;มา Flash Firmware ให้ ESP8266 ด้วย ESPTool กัน&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/4303590913838743697/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/4303590913838743697' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/4303590913838743697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/4303590913838743697'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2015/08/flashing-nodemcu-firmware-on-mac-os-x.html' title='Flashing NodeMCU firmware on Mac OS X'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikfzmxKrSMVfa19ICFo2HA3oVMlH7zGYD4S7OGeqpnIfpGThbF6QPyAEMUY9yX4hG2Xj7HXKD4btp8V7Smp7a4LvdZoYt-6S0myzsDuMx47X-WXvYgCULFCMCPqHDiPa-usXwFI5YflcM/s72-c/IMG_20150823_213031.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-5965592755385376778</id><published>2014-12-23T15:33:00.000+07:00</published><updated>2014-12-23T15:33:15.347+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="unix socket"/><title type='text'>List listening UNIX socket in Linux system.</title><content type='html'>&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;คำสั่งต่อไปนี้ ใช้ในการ list ดูว่ามี Unix socket ไฟล์ไหนที่กำลัง Listening อยู่บ้าง&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$ netstat --listen --unix&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;REF:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;a href=&quot;http://serverfault.com/questions/124517/whats-the-difference-between-unix-socket-and-tcp-ip-socket&quot;&gt;http://serverfault.com/questions/124517/whats-the-difference-between-unix-socket-and-tcp-ip-socket&lt;/a&gt;&amp;nbsp;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/5965592755385376778/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/5965592755385376778' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/5965592755385376778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/5965592755385376778'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2014/12/list-listening-unix-socket-in-linux.html' title='List listening UNIX socket in Linux system.'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-1439628457788830198</id><published>2014-12-22T18:43:00.000+07:00</published><updated>2014-12-22T18:43:35.890+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="nfs"/><title type='text'>Resolving Stale NFS</title><content type='html'>&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;ถ้าเจอเหตการณ์ Stale file blah blah blah อะไรสักอย่างนี่แหละใน NFS บน Linux ให้ใช้คำสั่งนี้ก่อนเลย&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;# exportfs -f&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;ได้ผลรึเปล่า ค่อยว่ากัน!&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;REF:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;a href=&quot;http://blogs.opusvl.com/technical/resolving-stale-nfs-file-handle-issues-on-linux&quot;&gt;http://blogs.opusvl.com/technical/resolving-stale-nfs-file-handle-issues-on-linux&lt;/a&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/1439628457788830198/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/1439628457788830198' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/1439628457788830198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/1439628457788830198'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2014/12/resolving-stale-nfs.html' title='Resolving Stale NFS'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-4521010168955982854</id><published>2014-11-21T01:27:00.001+07:00</published><updated>2014-11-21T01:27:28.556+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="mac"/><category scheme="http://www.blogger.com/atom/ns#" term="unetbootin"/><title type='text'>Fixing: Create USB Linux installer Unetbootin in OS X</title><content type='html'>&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;ปกติเวลาจะทำตัว Linux installer usb ก็จะใช้ &lt;a href=&quot;http://unetbootin.sourceforge.net/&quot; target=&quot;_blank&quot;&gt;Unetbootin&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Trebuchet MS&#39;, sans-serif;&quot;&gt;เคยใช้แต่อยู่ในลินุกซ์ มันก็เวิร์กมาตลอด&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;จนมาใช้ Mac ก็ยังใช้ Unetbootin แต่มันดันทำแล้วเอาไปเสียบบูตไม่ได้ ก็ไม่ได้หาสาเหตุหรือวิธีแก้จริงๆ จนไปเจอวิธีแก้อันนึงเข้าลองแล้วใช้ได้ เลยเอามาแบ่งปันกันในคราวนี้&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;สิ่งที่ต้องเตรียม&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;โหลด &lt;a href=&quot;http://www.syslinux.org/wiki/index.php/Download&quot; target=&quot;_blank&quot;&gt;syslinux&lt;/a&gt; มาไว้ที่เครื่องแล้วแตกไฟล์ออกมา มองหา mbr.bin แล้วจำไว้ (ตอนนี้ลองไฟล์ mbr.bin ที่อยู่ใน bios/mbr/ แล้วใช้ได้)&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;ISO image ในที่นี้ใช้ Debian netins&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;วิธีทำ&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &#39;Trebuchet MS&#39;, sans-serif;&quot;&gt;ใช้ Disk Utilities สร้าง Partition ให้ USB Flash drive โดยให้เลือก Option เป็น Master Boot Record (MBR)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Trebuchet MS&#39;, sans-serif;&quot;&gt;พอทำเสร็จ disk util จะ mount ให้อัตโนมัติ ให้ใช้คำสั่ง mount ดูว่า flash drive เราเป็น device อะไร เช่น /dev/disk2&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;ใช้คำสั่งดังนี้ในสิทธิ์ root&lt;/span&gt;&lt;i&gt;&lt;span style=&quot;font-family: Georgia, Times New Roman, serif;&quot;&gt;dd conv=notrunc bs=440 count=1 if=/path/to/syslinux/bios/mbr/mbr.bin of=/dev/disk2&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;จากนั้นใช้ Unetbootin ตามปกติ ก็จะสามารถบูตจาก USB Flash drive ได้แล้ว&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Georgia, Times New Roman, serif;&quot;&gt;&lt;i&gt;REF:&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Georgia, Times New Roman, serif;&quot;&gt;&lt;i&gt;&lt;a href=&quot;http://ubuntuforums.org/showthread.php?t=2174630&quot;&gt;http://ubuntuforums.org/showthread.php?t=2174630&lt;/a&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/4521010168955982854/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/4521010168955982854' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/4521010168955982854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/4521010168955982854'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2014/11/fixing-create-usb-linux-installer.html' title='Fixing: Create USB Linux installer Unetbootin in OS X'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-5212425587512350865</id><published>2014-03-20T17:20:00.000+07:00</published><updated>2014-03-20T17:20:08.343+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ddrescue"/><category scheme="http://www.blogger.com/atom/ns#" term="gddrescue"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="recovery"/><title type='text'>Recover failed HDD using Open Source tools</title><content type='html'>&lt;h2&gt;
This will show how to recover failed hard disk using Linux and open source tools&lt;/h2&gt;
&lt;h3&gt;
Failed hard disk in this case means:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;S.M.A.R.T. not healthy.&lt;/li&gt;
&lt;li&gt;Hard disk have some bad sector&lt;/li&gt;
&lt;li&gt;Some data cannot read and make system slow&lt;/li&gt;
&lt;li&gt;The disk are still available in /dev/&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
The tools&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Ubuntu Linux or other GNU Linux&lt;/li&gt;
&lt;li&gt;GNU ddrescue&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
Process:&lt;/h3&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;install the tools&lt;/li&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;

&lt;li&gt;# apt-get install gddrescue smartmontools&lt;/li&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;li&gt;Plug your failed hdd to linux system, use dmsg | tail to determine what device name were shown in this case is &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;b&gt;sdb&lt;/b&gt;&lt;/span&gt; ( /dev/sdb )&lt;/li&gt;
&lt;li&gt;If you want to recovery whole drive to another new healthy disk (disk to disk),&amp;nbsp;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;# ddrescue -f -n /dev/sdb /dev/sdX logfile.log # where X is your new healthy disk&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;The option -f and -n said force dump &quot;only&quot; the good parts from your failed hdd to new one, this will skip the error parts and make this activity faster than the dd command.&lt;/li&gt;
&lt;li&gt;&amp;nbsp;ddrescue use logfile.log file next time for recover the error parts.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Now the error parts.&lt;/li&gt;
&lt;li&gt;# ddrescue -d -f -r3 /dev/sdb /dev/sdX logfile.log # where X is your new healthy disk&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;The option -r3 said try 3 times to read error parts, you can change the desire value depends on your hdd health.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;You may or may not check your &amp;nbsp;new disk (fsck) when finish.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
Summary and suggestion:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Always monitor your hard disk health, use smartmontools and setup the daemon will help.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/5212425587512350865/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/5212425587512350865' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/5212425587512350865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/5212425587512350865'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2014/03/recover-failed-hdd-using-open-source.html' title='Recover failed HDD using Open Source tools'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-3703609585827251272</id><published>2014-02-06T14:38:00.001+07:00</published><updated>2014-03-11T11:45:18.169+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apt"/><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>การคอนฟิค apt ไม่ให้ติดตั้งแพคเกจที่ apt recommend (รวมถึง suggest)</title><content type='html'>&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;ปกติเวลาจะ apt-get install แพคเกจที่ต้องการ ใน Ubuntu มันจะติดตั้งแพคเกจส่วนที่เพิ่มเข้ามาคือ แพคเกจที่เป็น dependency (ถ้ามี) และ แพคเกจที่ recommend ซึ่ง recommend เนี่ย ไม่ต้องติดตั้ง เพิ่มเข้าไปก็ได้แต่ apt ใน Ubuntu มันทำให้(เปลือง space)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;การคอนฟิคไม่ให้ apt มันติดตั้ง recommend แพคเกจมาด้วย ทำได้ดังนี้&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;แก้ไขไฟล์คอนฟิค (ถ้าไม่มีก็สร้างใหม่เลย) &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;/etc/apt/apt.conf&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;เพิ่มบรรทัดต่อไปนี้ลงไป&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;b&gt;APT::Install-Recommends &quot;0&quot;;&lt;br /&gt;APT::Install-Suggests &quot;0&quot;;&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;เป็นการบอกว่า ไม่ต้องติดตั้งทั้ง Recommend และ Suggest แพคเกจ&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/3703609585827251272/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/3703609585827251272' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/3703609585827251272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/3703609585827251272'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2014/02/apt-apt-recommend-suggest.html' title='การคอนฟิค apt ไม่ให้ติดตั้งแพคเกจที่ apt recommend (รวมถึง suggest)'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-1197457281367899721</id><published>2014-01-01T16:43:00.000+07:00</published><updated>2014-01-01T16:43:13.131+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="laos"/><category scheme="http://www.blogger.com/atom/ns#" term="travel"/><title type='text'># หนองคาย | ลาว | เวียงจันทน์</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtfq6jeTvY82YqvZU5vZ4wQ-Bt7n-l7qSFEyQnkvybm2dTAQxaGYg19T7NJrp_4ekHlT0IKvhCM9bXOy22lKZh5gqWRla-3z-UZuf541kUjK3QANMdFj1S8inMb5GGDgfUPbmeAulCses/s1600/2013-12-30.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtfq6jeTvY82YqvZU5vZ4wQ-Bt7n-l7qSFEyQnkvybm2dTAQxaGYg19T7NJrp_4ekHlT0IKvhCM9bXOy22lKZh5gqWRla-3z-UZuf541kUjK3QANMdFj1S8inMb5GGDgfUPbmeAulCses/s320/2013-12-30.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h2 style=&quot;text-align: center;&quot;&gt;
&amp;nbsp;# หนองคาย | ลาว | เวียงจันทน์&lt;/h2&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
นี่คงเป็นครั้งแรกที่ได้บันทึกการเดินทาง (เป็นการเดินทางที่แขนขาและอวัยวะต่างๆ ไม่ได้อยู่หน้าคอมฯ)&lt;/h3&gt;
ใกล้ปีใหม่ หลังจากที่ไม่ได้กลับบ้านมา ๒ ปี ก็ฤกษ์กลับบ้านเสียที การกลับบ้านแต่ละครั้ง ก็มักจะมีเรื่องเซอร์ไพรส์ต่างๆ เช่น ครั้งก่อน พ่อได้เปลี่ยนชื่อเป็นชื่อใหม่ หรือ ครั้งนี้ กลับมาบ้านหลังใหม่ที่เป็นบ้านจริงๆ (อยู่ในแฟลตห้องแถวมาเกือบตลอดชีวิต) แล้วบังเอิญอีกอย่างคือ ที่บ้านมีจักรยานสำหรับทุกคนในบ้านเลย ทั้งแม่ พ่อ น้องชาย มีทุกคน ก็เลยเกิดอยากปั่นไปลาวขึ้นมา โดยที่ไม่ได้หาข้อมูลมากนัก ดูแต่ในแผนที่คร่าวๆ ว่า เวียงจันทน์อยู่ในระยะที่ปั่นถึงไหว ก็เลยตั้งเป้าไว้ที่เวียงจันทน์&lt;br /&gt;
&lt;br /&gt;
เมื่อถึงวันจริง ก็ออกจากบ้านประมาณ ๙​ โมงนิดๆ มั้ง จำไม่ได้เหมือนกัน พอปั่นไปที่ด่าน ตม. ที่สะพานมิตรภาพ (แอบเห็นป้ายห้ามจักรยานและมอไซด์ขับขี่บนสะพานด้วย แอบหวั่นๆ​ ) ด้วยความที่ไม่เคยไปลาวเลยสักครั้งเดียวตั้งแต่เกิดมา ก็เลยเดินงงๆ ไปยื่นพาสปอร์ตให้ จนท. แล้วเค้าก็ส่งกระดาษมาใบนึงที่ต้องเขียนเพื่อขอออกนอกประเทศ ผมเขียนไปซีกเดียวคือ ขาเข้า (มันจะมีสองซีกให้เราเขียน คือขาขอออกนอกประเทศและขอเข้าประเทศ) ซึ่งตรงนี้มันต้องเขียนขาออก คิดในใจว่า ก็ตูจะเข้าประเทศเค้านี่หว่า ฮา ก็เลยต้องเขียนอีกซีกนึง พอเสร็จก็เริ่มปั่นข้ามสะพาน บนสะพานมิตรภาพ มีรางรถไฟด้วยนะ รางอยู่ตรงกลางสะพานเลยล่ะ ตอนปั่นก็เสียวๆ จะโดนซิวอยู่เหมือนกัน ขับรถกันเร็วมาก แต่ก็ผ่านไปได้&lt;br /&gt;
&lt;br /&gt;
พอถึง ตม. ลาว ก็เริ่มเจอเรื่องงงๆ อีก เพราะไม่รู้ว่าต้องทำไรก่อน ไม่มีป้ายบอกเป็นสเต็ปๆ ว่า ๑ ต้องทำอะไร ๒ ต้องทำอะไรต่อ อะไรประมาณนี้ อาศัยดูเอาว่า เค้าต่อคิวกันตรงไหนเยอะๆ ก็ไปต่อคิวตรงที่เค้าทำบัตร RFID อะไรสักอย่าง ลืมถ่ายรูปมา ได้มาเป็น one way ticket&amp;nbsp; ซึ่งจนบัดนี้ก็ยังไม่อยู่ดีว่าเอาไปทำอะไร สงสัยคงใช้กับพวกรถยนต์หรือรถโดยสาร พอทำบัตรเสร็จ ก็ไปเขียนใบขอเข้าประเทศ แล้วก็ยื่นให้ จนท. เค้าก็ถามเราว่าเอารถไรมา (ช่องที่ใช้ยื่นเอกสารมันมี ๒ ที่ คือ คนปกติ กะ คนที่เอารถมา สงสัยว่าผมคงไปยื่นที่ช่องหลัง) ผมก็บอกไปว่าจักรยาน เค้าก็ไม่ได้ว่าหรือห้ามอะไร ก็ผ่านไปได้&lt;br /&gt;
&lt;br /&gt;
เมื่อปั่นผ่านด่านมาแล้ว ก็จะพบกับทางออก ซึ่งมีทางแยกอยู่ ๒ ทางคือ ซ้ายกับขวา แล้วที่นู่นไม่รู้ว่างบทำป้ายเค้าหมดหรือยังไง เพราะมันไม่มีป้ายบอกเลยว่า เลี้ยวซ้ายจะไปที่ไหน เลี้ยวขวาจะไปที่ไหน ผมต้องจอดดูแผนที่ในมือถือซึ่งมันต่อเน็ตไม่ได้แล้วตั้งแต่อยู่กลางสะพาน ยังดีที่เคยโหลดแผนที่บางส่วนไว้ ก็เลยพอดูออกว่าต้องไปทางไหน (เลี้ยวขวา) ผมก็ปั่นไปตามเส้นทางเรื่อยๆ ระหว่างทางก็คล้ายๆ อำเภอๆ นึงในบ้านเรานี่แหละ ไม่เจริญอะไรมาก ถนนก็ ๔ เลน (ปั่นชิดขวาสุดตลอด) ข้างๆ ทางก็มีฝุ่นมีอะไรพอสมควร เพราะเป็นเส้นทางขนส่งอะไรหลายอย่างเหมือนกัน และเหมือนเดิม ไม่มีป้ายบอกทางว่าอีกกี่กิโลจะถึงเวียงจันทน์ เท่าที่สังเกตได้คือ ที่ลาวเค้าก็ใช้ผลิตภัณฑ์ของเราเยอะทีเดียว ตั้งแต่อาหาร​ (มาม่า, น้ำปลา) ไปจนถึงของใช้ประจำวัน (ยาสระผม, น้ำยาล้างจาน) ผมก็ปั่นไปเรื่อยๆ จนถึงเวียงจันทน์ แล้วก็พักกินสนีกเกอร์บาร์กับน้ำเปล่า น้ำเปล่านี่ก็กินเรื่อยๆ ระหว่างทาง แถมไม่ได้แลกเงินไว้ด้วย ปั่นเล่นอยู่สักพัก ก็คิดว่าจะกลับ บังเอิญไปโผล่ถนนเส้นนึงมองไปไกลๆ ก็เห็นอะไรสักอย่างเหมือนที่เคยเห็นในรูป มันคือประตูชัย ทีแรกผมไปเวียงจันทน์โดยไม่ได้คิดว่าจะไปไหนบ้าง พูดง่ายๆ ก็คือไม่ได้วางแผนไว้&amp;nbsp; ก็เลยปั่นไปที่ประตูชัยถ่ายรูปสักนิดหน่อยก็ปั่นกลับ&lt;br /&gt;
&lt;br /&gt;
ทริปนี้ทำให้รู้ว่า&lt;br /&gt;
ควรพกปากกาติดตัว แล้วก็ควรฟิตร่างกายดีๆ&lt;br /&gt;
สาวลาวน่ารัก :P</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/1197457281367899721/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/1197457281367899721' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/1197457281367899721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/1197457281367899721'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2014/01/blog-post.html' title='# หนองคาย | ลาว | เวียงจันทน์'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtfq6jeTvY82YqvZU5vZ4wQ-Bt7n-l7qSFEyQnkvybm2dTAQxaGYg19T7NJrp_4ekHlT0IKvhCM9bXOy22lKZh5gqWRla-3z-UZuf541kUjK3QANMdFj1S8inMb5GGDgfUPbmeAulCses/s72-c/2013-12-30.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-1568628583145633673</id><published>2013-11-05T15:10:00.000+07:00</published><updated>2013-11-05T15:10:47.658+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="alfresco"/><category scheme="http://www.blogger.com/atom/ns#" term="ecm"/><title type='text'>Role และ Permission ใน Alfresco</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZYx_TbuJGCO_cd3iz0gC9ZjU9SNwTrsbSq5ve4-eC5yFe1aat4_l-5621HWSXspF7XrziNuztTTiVZ62roh_JBExelqAP09pPnUmqjGJ9u4gCmtIe5mkBsHme7MAkcG9KSYZq9gufB1A/s1600/alfresco-logo-640x148.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;74&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZYx_TbuJGCO_cd3iz0gC9ZjU9SNwTrsbSq5ve4-eC5yFe1aat4_l-5621HWSXspF7XrziNuztTTiVZ62roh_JBExelqAP09pPnUmqjGJ9u4gCmtIe5mkBsHme7MAkcG9KSYZq9gufB1A/s320/alfresco-logo-640x148.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;ใน Alfresco จะมี Permission ซึ่งจะแบ่งตาม Role ที่กำหนดให้กับ User ซึ่ง มีไม่เยอะหรอก แต่จำไม่ค่อยได้ &amp;nbsp;ก็เลยมาบล็อกเก็บไว้&lt;/span&gt;&lt;div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;Site permission - Permission ที่กำหนดใน Alfresco Site&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ol class=&quot;ol1&quot;&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Manager -&amp;nbsp;&lt;/span&gt;มีสิทธิ์ในทุก content ที่อยู่ใน site ไม่ว่าจะเป็นเอกสารที่สร้างจากตนเอง หรือ สมาชิกคนอื่นที่อยู่ใน site&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;Collaborator - มีสิทธิ์ในทุก content ที่เป็นเจ้าของอยู่ สามารถแก้ไข content ของสมาชิกคนอื่นๆ&amp;nbsp; แต่ไม่สามารถลบได้&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Contributors - มีสิทธิ์ในทุก&lt;/span&gt;&amp;nbsp;content ที่เป็นเจ้าของอยู่ แต่ไม่สามารถ แก้ไขและลบ content ของสมาชิกคนอื่นๆ ได้&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Consumer - &lt;/span&gt;สามารถเข้าถึง content ที่ได้รับอนุญาติเท่านั้น ไม่สามารถสร้าง content ของตัวเองได้&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;User roles และ Permission - สิทธิ์ของแต่ละ role ใน Alfresco&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
 
 
 
 



&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cols=&quot;7&quot;&gt;
 &lt;colgroup width=&quot;569&quot;&gt;&lt;/colgroup&gt;
 &lt;colgroup width=&quot;119&quot;&gt;&lt;/colgroup&gt;
 &lt;colgroup width=&quot;138&quot;&gt;&lt;/colgroup&gt;
 &lt;colgroup width=&quot;143&quot;&gt;&lt;/colgroup&gt;
 &lt;colgroup width=&quot;132&quot;&gt;&lt;/colgroup&gt;
 &lt;colgroup width=&quot;101&quot;&gt;&lt;/colgroup&gt;
 &lt;colgroup width=&quot;124&quot;&gt;&lt;/colgroup&gt;
 &lt;tbody&gt;
&lt;tr&gt;
  &lt;td align=&quot;LEFT&quot; bgcolor=&quot;#C1C1C1&quot; height=&quot;29&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;All permissions apply to the invited space&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;LEFT&quot; bgcolor=&quot;#C1C1C1&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;Owner (1)&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;LEFT&quot; bgcolor=&quot;#C1C1C1&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;Coordinator&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;LEFT&quot; bgcolor=&quot;#C1C1C1&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;Collaborator&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;LEFT&quot; bgcolor=&quot;#C1C1C1&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;Contributor&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;LEFT&quot; bgcolor=&quot;#C1C1C1&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;Editor&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;LEFT&quot; bgcolor=&quot;#C1C1C1&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;Consumer&lt;/span&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;LEFT&quot; height=&quot;29&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;See invited space&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;LEFT&quot; height=&quot;29&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;View content&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;LEFT&quot; height=&quot;29&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;Copy content&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;LEFT&quot; height=&quot;29&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;Preview content in template&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;LEFT&quot; height=&quot;29&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;View content properties&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;LEFT&quot; height=&quot;29&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;Check in content to invited space&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;LEFT&quot; height=&quot;29&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;Checkout content to different space.&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;LEFT&quot; height=&quot;29&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;Update/edit content created by other users&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;LEFT&quot; height=&quot;29&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;Update properties for content created by other users&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;LEFT&quot; height=&quot;29&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;Edit existing discussions&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;LEFT&quot; height=&quot;29&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;Create/add new content (1)&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;LEFT&quot; height=&quot;29&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;Cut/delete content created by other users&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;LEFT&quot; height=&quot;29&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;Create child spaces in the invited space&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;LEFT&quot; height=&quot;29&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;View content rules&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;LEFT&quot; height=&quot;29&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;Checkout content to same space.&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;&quot;&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;(2)&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;LEFT&quot; height=&quot;29&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;Contribute to existing discussions&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;LEFT&quot; height=&quot;29&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;Invite others&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;LEFT&quot; height=&quot;29&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;Start new discussion topic&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;LEFT&quot; height=&quot;29&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;Delete content created by other users&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;LEFT&quot; height=&quot;29&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;Same access rights as content owner&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;LEFT&quot; height=&quot;29&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;Take ownership of content&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;LEFT&quot; height=&quot;29&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;Create space rules&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;√&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Trebuchet MS, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
  &lt;td align=&quot;CENTER&quot; style=&quot;border-bottom: 1px solid #616366; border-left: 1px solid #616366; border-right: 1px solid #616366; border-top: 1px solid #616366;&quot;&gt;&lt;span style=&quot;color: #262626; font-family: Helvetica; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/1568628583145633673/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/1568628583145633673' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/1568628583145633673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/1568628583145633673'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2013/11/role-permission-alfresco.html' title='Role และ Permission ใน Alfresco'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZYx_TbuJGCO_cd3iz0gC9ZjU9SNwTrsbSq5ve4-eC5yFe1aat4_l-5621HWSXspF7XrziNuztTTiVZ62roh_JBExelqAP09pPnUmqjGJ9u4gCmtIe5mkBsHme7MAkcG9KSYZq9gufB1A/s72-c/alfresco-logo-640x148.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-2581086857496312551</id><published>2013-11-03T00:24:00.003+07:00</published><updated>2013-11-03T02:17:32.592+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="lxc"/><category scheme="http://www.blogger.com/atom/ns#" term="openvz"/><category scheme="http://www.blogger.com/atom/ns#" term="rhel6"/><title type='text'>ฤๅ OpenVZ กำลังจะตาย!? | Is OpenVZ obsoleted?</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0tXpZYpYkLKwiZkB8wKXUJLsT9X_aj4ALG_En5IZaZSf9qyPoOBuOmRZhyW9fZ1DJeR58Su8hW0s6w_gBQ9M3V_qmY_2s7FU9w65rqq4UABkxJVTDDfoo4jBxQ8CEw94bMo3HoydUXf4/s1600/OpenVZ-logo.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;81&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0tXpZYpYkLKwiZkB8wKXUJLsT9X_aj4ALG_En5IZaZSf9qyPoOBuOmRZhyW9fZ1DJeR58Su8hW0s6w_gBQ9M3V_qmY_2s7FU9w65rqq4UABkxJVTDDfoo4jBxQ8CEw94bMo3HoydUXf4/s320/OpenVZ-logo.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;มีหลายคนเชื่อว่า OpenVZ ล้าสมัยบ้าง กำลังจะตายบ้าง ก็เลยถามคนเหล่านั้นว่า ทำไมถึงเชื่ออย่างนั้นล่ะ คำตอบสุดฮิตที่ได้มา จะมีสามข้อดังนี้&lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;เคอร์เนล ของ OpenVZ เก่าจัด เพราะอิงอยู่กับรุ่น 2.6.32 ในขณะที่คนอื่นปาไปรุ่น 3.x ละ&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;LXC คืออนาคต ส่วน OpenVZ นั้นคือ อดีต ~&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;OpenVZ ไม่มีการพัฒนาต่อแล้ว จนโดนถอดออกจาก Debian Wheezy&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;span style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;เอาล่ะ มาดูกันว่าข้อเท็จจริงแต่ละข้อมีอะไรบ้าง&lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&quot;Kernel ของ OpenVZ เก่าจัด&quot; - Kernel ของ OpenVZ ในปัจจุบัน มีฐานมาจาก Red Hat Enterprise Linux 6 (RHEL6) ซึ่งเป็นรุ่นที่ใหม่ที่สุดและดีที่สุดจาก Red Hat ซึ่งเป็นบริษัทที่ทำตลาด Enterprise ที่มีส่วนร่วมในการพัฒนา Kernel ของลินุกซ์ มาโดยตลอด ไม่มี Kernel ไหนที่จะไม่มีบั๊กหรอก แต่อยากจะบอกว่า RHEL6 คือดิสโทรที่มี Kernel ที่มีคุณภาพใกล้เคียงที่สุดแล้ว &lt;br /&gt;&lt;br /&gt;สิ่งที่นักพัฒนาจาก Red Hat ทำก็คือ Fork Kernel มาจาก ต้นน้ำ, จัดการบั๊ก, แก้ปัญหาเรื่อง security, update ตัว driver และเพิ่มฟีเจอร์ที่ไม่มีในต้นน้ำ ซึ่งกระบวนการนี้ทำกันกว่าครึ่งปีกว่าจะปล่อยออกมา ซึ่งพอปล่อยออกมาก็จะกลายเป็นเคอร์เนลที่ &quot;เก่าและล้าสมัย&quot; ไปแล้ว ถ้ามองในมุมตัวเลขของรุ่นเคอร์เนล นั่นแหละ อย่าเพิ่งตัดสินตัวเคอร์เนลจากรุ่นของมัน เพราะนั่นไม่ได้แปลว่าเก่าหรือล้าสมัย มันความเสถียรและปลอดภัยมากกว่า ซึ่งหลังจากที่ปล่อยออกมา จะมีการ maintain ต่างๆ เช่น ทำให้รองรับฮาร์ดแวร์ใหม่ๆ ได้ หรือมี security bug fix ซึ่งสิ่งเหล่านี้ทำให้ OpenVZ ได้ใช้เคอร์เนลที่มีคุณภาพ &lt;br /&gt;&lt;br /&gt;ในอนาคตอันใกล้ RHEL7 กำลังพัฒนาตัวเคอร์เนลที่ใช้รุ่น 3.x เป็นฐาน ซึ่ง OpenVZ จะพอร์ตเคอร์เนลไปใช้ของ RHEL7 เช่นกัน แต่ตอนนี้ เคอร์เนลของ RHEL6 ที่ OpenVZ ใช้อยู่ คือเคอร์เนลที่ใหม่ที่สุดและดีที่สุด และขอเถอะ อย่าตัดสินกันที่ uname แล้วผลที่ออกมาคือ 2.6.32&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&quot;OpenVZ vs LXC&quot; - เคอร์เนลของ OpenVZ พัฒนามาอย่างยาวนาน และเป็นการพัฒนาที่แยกจากคนอื่นมาโดยตลอด หรืออีกนัยนึงก็คือ พัฒนาแยกจากเคอร์เนลของลินุกซ์ ความผิดพลาดเกิดขึ้นในปี 2005 และตั้งแต่นั้น ทีม OpenVZ ก็ยังคงพยายามที่จะรวมส่วนต่างๆ OpenVZ เข้าไปยังเคอร์เนลต้นน้ำ โดยหวังว่าเมื่องานส่วนนี้เสร็จ ที่เคอร์เนลต้นน้ำจะสามารถใช้ความสามารถของ OpenVZ ได้ครบทุกฟังก์ชัน &lt;br /&gt;&lt;br /&gt;แล้ว LXC ล่ะ? LXC เป็น user-space tool ซึ่งรันอยู่บนเคอร์เนล ในขณะที่ทีมของ OpenVZ ทำงานเกี่ยวกับการรวมเข้าไปยังลินุกซ์เคอร์เนลอยู่นั้น LXC ได้เริ่มใช้ฟีเจอร์เหล่านั้น ซึ่งฟีเจอร์กว่าครึ่งนึงถูกพัฒนาโดยทีมของ OpenVZ&lt;br /&gt;&lt;br /&gt;ทั้ง OpenVZ และ LXC ต่างมีการพัฒนากันอย่างต่อเนื่องและต่างมีอนาคตเป็นของตัวเอง อาจจะมีการรวมเครื่องมือกันในบางจุด ซึ่งมาถึงตรงนี้ก็พูดได้เลยว่า LXC ไม่ได้เป็นตัวตายตัวแทนของ OpenVZ แต่เป็นโปรเจ็คคนละโปรเจ็คกันเลย OpenVZ ถือว่าเป็น LXC++ เพราะมีฟีเจอร์หลายอย่างที่ยังไม่มีในเคอร์เนลต้นน้ำ เช่น การจัดการทรัพยากรณ์ที่ดีกว่า หรือเทคโนโลยีอย่าง ploop&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&quot;OpenVZ หยุดพัฒนาแล้ว และถูกถอนออกจาก Debian&quot; ทีมเคอร์เนลของ Debian ได้ตัดสินใจเอา OpenVZ ออกจาก Debian ซึ่งเป็นสิ่งที่เข้าใจได้ไม่ยากคือ การ maintain เคอร์เนล ใช้เวลาและทรัพยากรณ์ซึ่งทีม Debian มีสิ่งเหล่านี้ไม่พอ นั่นไม่ได้หมายความว่า OpenVZ หยุดพัฒนาแล้ว ซึ่งมันแปลกมากที่จะมากล่าวหากันแบบนี้ &lt;a href=&quot;http://openvz.org/News/updates&quot;&gt;http://openvz.org/News/updates&lt;/a&gt; ในลิงก์นี้จะบอกได้ว่ามีการอัพเดตอะไรบ้าง ซึ่งในปีนี้มีการปล่อยซอฟต์แวร์ออกมาถึง 80 ครั้ง, อาทิตย์ละ 2 ครั้ง ซึ่งสำหรับ Debian ทางทีม OpenVZ ก็มี repository ให้ด้วย&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;span style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;บล็อกนี้เป็นการแปลมาทั้งดุ้น ตัดออกบ้าง เสริมบ้าง อ่านแล้วอาจจะแปลกๆ นิดนึงโนะ &amp;lt;(&quot;)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;ปล. พาดหัวแรงไปนิดส์ :P&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;REF: &lt;a href=&quot;http://openvz.livejournal.com/45647.html&quot;&gt;http://openvz.livejournal.com/45647.html&lt;/a&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/2581086857496312551/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/2581086857496312551' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/2581086857496312551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/2581086857496312551'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2013/11/openvz-is-openvz-obsoleted.html' title='ฤๅ OpenVZ กำลังจะตาย!? | Is OpenVZ obsoleted?'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0tXpZYpYkLKwiZkB8wKXUJLsT9X_aj4ALG_En5IZaZSf9qyPoOBuOmRZhyW9fZ1DJeR58Su8hW0s6w_gBQ9M3V_qmY_2s7FU9w65rqq4UABkxJVTDDfoo4jBxQ8CEw94bMo3HoydUXf4/s72-c/OpenVZ-logo.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-1127593293101673824</id><published>2013-10-29T11:17:00.002+07:00</published><updated>2013-10-29T11:18:41.575+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="ssh"/><title type='text'>การใช้ SSH config ไฟล์ เพื่อทำให้การ ssh ง่ายขึ้น</title><content type='html'>&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;ปกติเวลาจะ ssh ไปที่ host มักจะใช้คำสั่งประมาณนี้&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;b&gt;$ ssh user@host.domain&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;หรือถ้าใช้ port ที่นอกเหนือจาก 22 ก็จะใช้คำสั่ง&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;b&gt;$ ssh user@host.domain -p 2222&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;ถ้ามีสัก 10 host อาจจะไม่สนุกละ จำผิดจำถูก อาจจะใส่ port ผิด หรือพิมพ์ชื่อโฮสยาวๆ ผิดไปตัวนึง เสียเวลา&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;ก็เลยเป็นที่มาของบล็อกนี้ จะใช้ไฟล์ config เพื่อทำให้การ ssh ง่ายขึ้นและแม่นยำขึ้น มาดูกันว่าทำไง&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;ก่อนอื่นเลย ใช้ editor สร้างไฟล์ขึ้นมาไฟล์นึงที่ เช่นผมใช้ vim ก็จะสร้างด้วยคำส่ัง&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;b&gt;vim ~/.ssh/config&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;อธิบายได้คือ สร้างไฟล์ config ของ ssh ไว้ที่ home ของเรา โดยเนื้อหาข้างในจะมีรูปแบบดังนี้&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;b&gt;Host hostnickname&lt;br /&gt;&amp;nbsp; &amp;nbsp; User username&lt;br /&gt;&amp;nbsp; &amp;nbsp; Hostname hostname หรือ ip address&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;เช่น&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Host google&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Username sergey&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Hostname ssh.google.com&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;คราวนี้ เวลาจะ ssh ก็จะใช้คำสั่งสั้นลง เป็น&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;b&gt;$ ssh google&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;ยกตัวอย่างอีกสักอัน&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;b&gt;Host google&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Username sergey&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Hostname ssh.google.com&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;b&gt;Host myhost&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Username phondanai&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Hostname mysuperlonghostingnameever.com&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Port 2222&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Compression yes&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;แล้วการ ssh ก็จะง่าย~ ขึ้น (หมายเหตุ Compression ไม่ต้องมีกะได้ แต่ก็ช่วยได้นะเวลาเน็ตกาก)&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;b&gt;$ ssh myhost&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;ยังมี option อีกมาก แต่เท่าที่ได้ใช้ตอนนี้ก็คงมีเท่านี้ล่ะ หวังว่าจะทำให้ชีวิตง่ายขึ้นนะ&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;ปล. หา REF ไม่เจอ T__T&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/1127593293101673824/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/1127593293101673824' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/1127593293101673824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/1127593293101673824'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2013/10/ssh-config-ssh.html' title='การใช้ SSH config ไฟล์ เพื่อทำให้การ ssh ง่ายขึ้น'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-3028821177130810742</id><published>2013-10-25T01:34:00.001+07:00</published><updated>2013-10-25T01:34:29.355+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="openvz"/><category scheme="http://www.blogger.com/atom/ns#" term="virtualization"/><title type='text'>ว่าด้วยเรื่อง OpenVZ (ตอนที่ ๒)</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0tXpZYpYkLKwiZkB8wKXUJLsT9X_aj4ALG_En5IZaZSf9qyPoOBuOmRZhyW9fZ1DJeR58Su8hW0s6w_gBQ9M3V_qmY_2s7FU9w65rqq4UABkxJVTDDfoo4jBxQ8CEw94bMo3HoydUXf4/s1600/OpenVZ-logo.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;81&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0tXpZYpYkLKwiZkB8wKXUJLsT9X_aj4ALG_En5IZaZSf9qyPoOBuOmRZhyW9fZ1DJeR58Su8hW0s6w_gBQ9M3V_qmY_2s7FU9w65rqq4UABkxJVTDDfoo4jBxQ8CEw94bMo3HoydUXf4/s320/OpenVZ-logo.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;ถัดจาก &lt;a href=&quot;http://phondanai.blogspot.com/2013/10/openvz.html&quot; target=&quot;_blank&quot;&gt;ตอนที่ ๑&lt;/a&gt; ได้เกริ่นเริ่มว่า OpenVZ คืออะไร อยู่ตรงไหนของ Virtualization&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Trebuchet MS&#39;, sans-serif;&quot;&gt;ตอนที่ ๒ นี้จะพามารู้จักทั้งสามส่วนที่ได้ทิ้งท้ายไว้เมื่อครั้งที่แล้วให้มากขึ้น ซึ่งได้แก่&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;Virtualization และ Isolation ที่ได้พูดไปว่า สามารถมีได้หลาย Virtual Environment (ต่อไปขอเรียกสั้นๆ ว่า VE) ใน physical server เพียงเครื่องเดียว&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;Resource management ซึ่งคือส่วนที่ OpenVZ เอาไว้จัดการทรัยากรทั้งหลายให้กับแต่ละ VE&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;Checkpointing ส่วนนี้ จะเกี่ยวข้องกับการทำ Live Migration ซึ่งจะเป็นยังไง ในโพสนี้มีบอกเช่นกัน&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;h3&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;Virtualization และ Isolation&lt;/span&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;แต่ละ VE จะมีเซ็ตของทรัพยากร&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Trebuchet MS&#39;, sans-serif;&quot;&gt;เป็นของตัวเอง (isolate) ซึ่ง&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Trebuchet MS&#39;, sans-serif;&quot;&gt;ได้มาจาก kernel ของตัวโฮส OS &amp;nbsp;ซึ่งทรัพยากรเหล่านั้นจะแยกเป็นเอกเทศน์ไม่เกี่ยวข้องกับ VE อื่นๆ แต่อย่างใด ซึ่งทรัพยากรดังกล่าวจะมีดังนี้&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;ไฟล์ -- ไม่ว่าจะเป็น ไลบรารี่ของระบบ, แอพพลิเคชัน, /proc และ /sys, หรือการ lock ไฟล์&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;ผู้ใช้ และ กลุ่มผู้ใช้ -- แต่ละ VE จะมี root เป็นของตัวเอง รวมไปถึง ผู้ใช้และกลุ่มผู้ใช้ด้วย&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;โครงสร้างโปรเซส -- VE จะมองเห็นเฉพาะโปรเซสของตัวเอง โดยเริ่มตั้งแต่ init เหมือนกับลินุกซ์ทั่วไป และหมายเลยโปรเซส(PID) ของ init คือหมายเลข 1 นั่นเอง&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;เน็ตเวิร์ก -- VE จะได้อุปกรณ์เน็ตเวิร์ก &lt;b&gt;เสมือน&lt;/b&gt;&amp;nbsp;ซึ่งจะทำให้ VE สามารถมีหมายเลยไอพี เป็นของตัวเอง และรวมไปถึงกฏของ netfilter (iptables) และการ routing&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;อุปกรณ์ -- บางอุปกรณ์จะเป็นอุปกรณ์เสมือน ในบางกรณี หากต้องการให้ VE สามารถเข้าถึงอุปกรณ์จริงๆ บนเครื่องโฮส ก็สามารถทำได้ เช่น NIC, serial port เป็นต้น&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;IPC ออปเจ็กต์ -- ได้แก่ &amp;nbsp;shared memory, semaphores และ mesages&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;Resource management&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;การจัดการทรัพยากร ถือเป็นเรื่องที่สำคัญที่สุดของ Virtualization ประเภท OS-Level เพราะทรัพยากรที่มีอยู่จำกัดได้ถูกแชร์โดย kernel เดียว ผ่านไปยัง VE หลายๆ ตัว ซึ่งทรัพยากรเหล่านี้ ต้องมีการจัดการที่ดี เพื่อที่จะทำให้ VE ที่รันอยู่ไปมีผลกระทบกับ VE ตัวอื่นๆ ที่รันอยู่ในโฮสเดียวกัน&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;OpenVZ มีการจัดการทรัพยการอยู่สามส่วน&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;จัดการโควต้าดิสก์แบบสองชั้น -- ชั้นแรก ที่ OpenVZ server สามารถจำกัดโควต้าของขนาดดิสก์และจำนวนของ inode, ชั้นที่สอง ที่ VE สามารถใช้ การจำกัดโควต้าโดยใช้เครื่องมือ UNIX quota ปกติ โดยสามาถจำกัดได้ทั้งแบบรายผู้ใช้ หรือแบบกลุ่มผู้ใช้&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&quot;Fair&quot; CPU scheduler -- OpenVZ CPU scheduler ก็มีสองระดับเช่นกัน คือ ระดับแรก จะมองดูว่า VE ไหนที่จำเป็นต้องใช้พลังของ CPU รวมถึงมีการเซ็ตระดับความสำคัญไว้ ส่วนอีกระดับคือ ภายใน VE จะใช้ standard Linux scheduler ในการดูว่า &lt;b&gt;โปรเซส&lt;/b&gt; ไหนที่จำเป็นต้องใช้พลังของ CPU โดยใช้ ระดับความคำคัญของโปรเซส&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;User Beancounters -- คือเซ็ตของ การนับ, การจำกัด และ การันตี ซึ่งจะมีอยู่ 20 พารามิเตอร์ซึ่งจะนำมาควบคุมการทำงานของ VE ผลที่ได้คือ จะไม่มี VE ไหน ใช้ทรัพยากรเกินกว่าที่ได้กำหนดไว้ ซึ่งอาจไปกระทบกับ VE อื่นได้ ซึ่งค่าส่วนใหญ่จะเกี่ยวกับหน่วยความจำ, IPC, network buffer เป็นต้น&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;Checkpointing และ live migration&lt;/span&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;การทำ checkpoint นำไปสู่การอนุญาติให้ทำ live migration หรือการย้าย VE จาก physical server นึง ไปยังอีก server นึงได้ โดยที่ไม่ต้องดาวน์ VE กระบวนการคือ VE จะถูก &quot;แช่แข็ง&quot; และสถานะทั้งหลายจะถูกเซฟลงดิสก์ โดยไฟล์นี้ล่ะจะถูกส่งต่อไปยัง server อีกเครื่อง จากนั้น VE ก็จะถูก ละลายน้ำแข็ง​ (เรียกว่า restore กะได้) กระบวนการทั้งหมดเกิดขึ้นภายในไม่กี่วินาที ซึ่งมองจากมุมผู้ใช้แล้ว จะไม่เหมือนเป็นการดาวน์ VE แต่จะเหมือนเป็นการดีเลย์ระหว่ากระบวนการซะมากกว่า&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;หมดแล้วสำหรับครั้งนี้ ครั้งหน้าก็น่าจะยังคงเป็น OpenVZ อยู่ พอดีใช้บ่อย เลยมีอะไรมาเขียนนี่แหละ&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/3028821177130810742/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/3028821177130810742' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/3028821177130810742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/3028821177130810742'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2013/10/openvz_25.html' title='ว่าด้วยเรื่อง OpenVZ (ตอนที่ ๒)'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0tXpZYpYkLKwiZkB8wKXUJLsT9X_aj4ALG_En5IZaZSf9qyPoOBuOmRZhyW9fZ1DJeR58Su8hW0s6w_gBQ9M3V_qmY_2s7FU9w65rqq4UABkxJVTDDfoo4jBxQ8CEw94bMo3HoydUXf4/s72-c/OpenVZ-logo.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-7870129282147027132</id><published>2013-10-22T00:24:00.003+07:00</published><updated>2013-10-22T11:24:08.225+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="openvz"/><category scheme="http://www.blogger.com/atom/ns#" term="virtualization"/><title type='text'>ว่าด้วยเรื่อง OpenVZ (ตอนที่ ๑)</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://openvz.org/&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;81&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAMuudysOLp_1FJJWoeIs4YdUjka4IE2Hq4dkCcJoMIXop64EYAN2qPeBQn3Ni_jgmBQDe7k6XgaVaSI3boZw-9VwinyqJ23X_bnO3v2CDiErQIu_eXmXJ_pIagf2GQQ3AkBrLMCgnMGw/s320/OpenVZ-logo.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;a href=&quot;http://openvz.org/&quot; target=&quot;_blank&quot;&gt;OpenVZ&lt;/a&gt; นั้น เป็นซอฟต์แวร์สำหรับทำ Operating system-level Virtualization บน Linux&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;Virtualization ประเภทนี้นอกจาก OpenVZ ก็จะมี FreeBSD Jail, Solaris Zones/Containers, Linux-VServer หรือที่ดังๆ เลยตอนนี้ก็ LXC (LinuX Containers) เป็นต้น&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Trebuchet MS&#39;, sans-serif;&quot;&gt;Virtualization ประเภทนี้จะใช้ Kernel ตัวเดียวกันกับที่ Host รันอยู่ หรืออีกนัยนึงคือ ไม่สามารถสร้าง vm ที่ใช้ OS อื่นนอกเหนือจากที่ Kernel ของเครื่อง Host รองรับ (งงหนักกว่าเดิมไหมเนี่ย - -a )&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;เวลาพูดถึง OpenVZ มักจะต้องพูดถึงอีกคำนึงคือ Virtual Environment (VE) และพ่วงมาด้วยคำต่างๆ ที่พูดถึงสิ่งเดียวกัน เช่น VPS, container, partition&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;VE นั้นจะมีสภาพแวดล้อมเป็นของตัวเอง กล่าวคือ มี process init, filesystem, user (รวมถึง root), มี NIC และ IP address, routing tables, firewall rules(netfilter/iptables) เป็นของตัวเอง แต่โดยพ้ืนฐานก็จะไม่พ้นตัว Kernel ของ Host&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;Kernel ของ OpenVZ จะเป็น Kernel ที่ปรับแต่งมาสำหรับงาน Virtualization โดยมีฟังก์ชันต่างๆ เช่น&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;การทำ Virtualization และ isolation คือสามารถมีได้หลาย vm โดยใช้ kernel เพียงตัวเดียว&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;มีการจัดการทรัพยากรณ์ เช่น การจำกัด CPU, RAM, และพื้นที่ฮาร์ดดิสก์&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;การทำ Checkpoint จะเป็นการ &lt;b&gt;แช่แข็ง(Freeze)&amp;nbsp;&lt;/b&gt;สถานะของโปรเซส เพื่อบันทึกสถานะของดิสก์ไฟล์ในขณะนั้น&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;ครั้งหน้า(ไม่รู้เมื่อไหร่) จะมาเล่าต่อละกัน ไม่ได้เขียนนาน เริ่มเขียนไม่ถูกแระ &amp;lt;(&quot;)&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/7870129282147027132/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/7870129282147027132' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/7870129282147027132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/7870129282147027132'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2013/10/openvz.html' title='ว่าด้วยเรื่อง OpenVZ (ตอนที่ ๑)'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAMuudysOLp_1FJJWoeIs4YdUjka4IE2Hq4dkCcJoMIXop64EYAN2qPeBQn3Ni_jgmBQDe7k6XgaVaSI3boZw-9VwinyqJ23X_bnO3v2CDiErQIu_eXmXJ_pIagf2GQQ3AkBrLMCgnMGw/s72-c/OpenVZ-logo.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-6439564348437677899</id><published>2012-08-01T21:15:00.002+07:00</published><updated>2013-06-13T00:28:06.333+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="ftp"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="proftpd"/><title type='text'>Config proftpd with jail on Debian</title><content type='html'>&lt;h4&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;install proftpd&lt;/span&gt;&lt;/h4&gt;
&lt;div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;# aptitude install proftpd&lt;/span&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;stop ftp service&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;# /etc/init.d/proftpd stop&lt;/span&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;
&lt;span style=&quot;font-family: &#39;Trebuchet MS&#39;, sans-serif;&quot;&gt;config&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;edit the config file at /etc/proftpd/proftpd.conf&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;uncomment the line&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;DefaultRoot ~&lt;/span&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;
&lt;span style=&quot;font-family: &#39;Trebuchet MS&#39;, sans-serif;&quot;&gt;start ftp service&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;# /etc/init.d/proftpd start&lt;/span&gt;&lt;/blockquote&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/6439564348437677899/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/6439564348437677899' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/6439564348437677899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/6439564348437677899'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2012/08/config-proftpd-with-jail-on-debian.html' title='Config proftpd with jail on Debian'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-6498967150232166220</id><published>2012-02-23T09:58:00.001+07:00</published><updated>2012-02-23T10:00:16.832+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="vi"/><category scheme="http://www.blogger.com/atom/ns#" term="vim"/><title type='text'>เปิดไฟล์ข้อความ(หรือ source code) แล้วไปบรรทัดที่ต้องการอย่างรวดเร็ว ด้วย vi(m)</title><content type='html'>ถ้าใครโ้ค้ดแล้วคอมไฟล์ เวลาจะไปที่บรรทัดที่มัน error ก็ต้องเปิดแล้วเลื่อนบรรทัดใช่ไหม&lt;br /&gt;
ถ้าใช้ vi(m) สามารถกระโดดไปที่บรรทัดนั้นได้ตั้งแต่เปิดไฟล์นั้นเลย นั่นคือใช้คำสั่ง&lt;br /&gt;
&lt;br /&gt;
$ vim +33 source-code.c &amp;nbsp; &amp;nbsp; &amp;nbsp; # ก็จะไปบรรทัดที่ 33</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/6498967150232166220/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/6498967150232166220' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/6498967150232166220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/6498967150232166220'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2012/02/source-code-vim.html' title='เปิดไฟล์ข้อความ(หรือ source code) แล้วไปบรรทัดที่ต้องการอย่างรวดเร็ว ด้วย vi(m)'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-6470951455866431869</id><published>2011-10-06T16:14:00.001+07:00</published><updated>2011-10-06T16:16:37.612+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="เพลง"/><title type='text'>ครวญ</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/XN9aQCnK8DU?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/6470951455866431869/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/6470951455866431869' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/6470951455866431869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/6470951455866431869'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2011/10/blog-post.html' title='ครวญ'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-5110040655368461023</id><published>2011-09-19T12:05:00.002+07:00</published><updated>2011-09-19T12:09:10.011+07:00</updated><title type='text'>Another Boring Day</title><content type='html'>Today is the boring day again.&lt;br /&gt;
&lt;div&gt;
I want to read something that worth for myself.&lt;/div&gt;
&lt;div&gt;
But I not in mood anymore.&lt;/div&gt;
&lt;div&gt;
My body was tried and feel asleep all the time because I sleep too late.&lt;/div&gt;
&lt;div&gt;
May be I must go to sleep early for my&amp;nbsp;health.&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/5110040655368461023/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/5110040655368461023' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/5110040655368461023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/5110040655368461023'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2011/09/another-boring-day.html' title='Another Boring Day'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-3803609531525662918</id><published>2010-11-04T15:12:00.004+07:00</published><updated>2010-11-08T15:27:58.954+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="replace"/><category scheme="http://www.blogger.com/atom/ns#" term="search"/><category scheme="http://www.blogger.com/atom/ns#" term="vi"/><category scheme="http://www.blogger.com/atom/ns#" term="vim"/><title type='text'>search and replace in vi(m)</title><content type='html'>&lt;div&gt;search by&lt;/div&gt;&lt;div&gt;/word_to_find&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;eg. replace gtkmm-2.0 with gtkmm-2.4&lt;div&gt;in vi(m) use:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;:%s/gtkmm\-2\.0/gtkmm\-2\.4/g&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;:)&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/3803609531525662918/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/3803609531525662918' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/3803609531525662918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/3803609531525662918'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2010/11/search-and-replace-in-vim.html' title='search and replace in vi(m)'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3354579053058900072.post-539313348246314511</id><published>2010-10-08T14:13:00.002+07:00</published><updated>2010-10-08T14:15:52.125+07:00</updated><title type='text'>use udevinfo in ubuntu</title><content type='html'>udevinfo -a&lt;br /&gt;In ubuntu use udevadm instead eg.&lt;br /&gt;udevadm -q all -n /dev/sda1&lt;br /&gt;&lt;br /&gt;:)</content><link rel='replies' type='application/atom+xml' href='http://phondanai.blogspot.com/feeds/539313348246314511/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3354579053058900072/539313348246314511' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/539313348246314511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3354579053058900072/posts/default/539313348246314511'/><link rel='alternate' type='text/html' href='http://phondanai.blogspot.com/2010/10/use-udevinfo-in-ubuntu.html' title='use udevinfo in ubuntu'/><author><name>Phondanai Khanti</name><uri>http://www.blogger.com/profile/09319646635689331171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>