<?xml version="1.0" encoding="TIS-620" ?>
<rss version="2.0">
<channel>
	<title>Narisa.com Community Blog List</title>
	<link><![CDATA[http://www.narisa.com/forums/index.php?s=d0f3500ec898de4ec1ae6b1d4938f564&app=blog]]></link>
	<description>Community Blog List Syndication</description>
	<pubDate>Mon, 08 Dec 2014 06:00:55 +0000</pubDate>
	<webMaster>alert@narisa.com (Narisa.com)</webMaster>
	<generator>IP.Blog</generator>
	<ttl>60</ttl>
	<item>
		<title><![CDATA[minimalist's Blog - �ѡ�ͷ� 3 �����������ʹ�]]></title>
		<link><![CDATA[http://www.narisa.com/forums/index.php?app=blog&blogid=21&showentry=3107]]></link>
		<category></category>
		<description><![CDATA[���������¹���͡����ҹ��ѧ���ҹ�ҡ ����������������¹����������ѹ˹��¤�Ѻ <img src='http://www.narisa.com/forums//public/style_emoticons/default/smile.png' class='bbc_emoticon' alt=':)' /><br />
<br />
�Ѩ�غѹ���ӧҹ����� ��ԧ� ��ӧҹ������ҵ�ʹ �·ӧҹ��Ш��� 2 �ա����ͧ �����Ҩ��������� ����֡������� ���ʶһ�ԡ�ͷ������ <img src='http://www.narisa.com/forums//public/style_emoticons/default/smile.png' class='bbc_emoticon' alt=':)' /> ������ǡѺ enterprise architecture, software architecture, non-functional requirement, test case design, test architecture<br />
<br />
<br />
���ӧҹ��ҹ�ͷ��� 17 ���� �������������¹����� 3 ����ͧ����Ҩӹǹ������ ����Ҥ�Ѱ �͡�� ���Ҥ��Ҥ�á�����ӡ��� 15 ��Ҥ�� ��Ť��������ҷء��� ����ѷ�ͷշ������㹵�Ҵ��ѡ��Ѿ��᷺�ء��¨��֧����ѷ���� ����վ�ѡ�ҹ���֧ 10 �� �龺������ 3 �����������ʹ� ����<br />
<br />
1) ����� '��' �ӧҹ�ͷ� ���������á�� ����֡�����á��֡��仧��� �ӧҹẺ����� 'ᾪ���' ����ç�ѹ���� ����ѧ���ͺ���¹������ͺ��ҹ˹ѧ��� �� soft skill �������� ���Ф��ͷդ�¡Ѻ�á�����������ͧ�ѹ� ������ͧ�ա���� EQ ���������������ͧ ��Ẻ��������º����á��Ӻҡ ������ specialist �礧����ʹ ��觾Ѳ�ҵ���ͧ��������� �͡�ҡ���˹������ �Թ��͹������鹴��� ����Ҩ�֧���Ŵŧ���«�� �ش���¤�������������١�պ����ͧ�͡仨ҡǧ��� ���ͧ��Ъվ����᷹ͧ ���Ͷ���ѧ�����ʹ���������д���˹���Թ���������������� ���ͧ���ӧҹ�ͷ����ҧʹء�ش����ҵ��� ����������� ���������º��ǻ��»չ��ѹ�<br />
<br />
2) ���������дѺ�٧��м��������ͷ� ���Ҵ�ѡ�д�ҹ�ͷ����������·�ȹ��ҹ�ͷշ�������� ᷺�ءͧ����ռ�������Ẻ����駹�� ����繨ش��͹��ҹ�ͷբͧͧ��÷����� ���ӹǹ�ҡ��ʹ��ͷ�����ʹء�Ѻ෤���������ػ�ó�ѹ���µ�ҧ� �ҹ� ��������·��Դ���֡�Ҩ�ԧ�ѧ��к�������� ����ͧ��è֧ŧ��´��¡�����ͷ����ҧ������������ �������秡�ش��� ��������·������ͷ������ҧ���������� '����§' �������͡��¹�����շ���˹��ҧ �Ҿ���ͧ˹�ҷ����繨ҡ��Ե�ѳ����к�ԡ�âͧ�� �Ѻ���ͧ��ѧ����ѹ�Ҩ��������ͧ�ѹ��¡��� ˹ӫ�Ӿǡ������������ ��. ��йѡ�Ԫҡ��������� �ѹ� ��觷ӧҹ���ͤ�§Ҫ�ҧ ���������������������ʹ˭������ʹԹ �ͻѭ�Ҵ�ҹ�ͷշ��á�����¹�º�� '�Թ��������Թ���' �����ѡ�Ԫҡ��Ẻ '��繪�ҧ��� �������ҧ' ����Ѻ���ء�ѭ��������´�䫹� ��䫹�㹷��������������͡Ẻ<br />
<br />
3) �������������ҵ���ͧ������������� ˹ӫ���ѧ�Ҵ�͡�� �Ҩ������������ǧ���ͧ �������������Ժ������ ���м��������������˹�Һ�ҹ����ѹ�餹�ѹ�������� ����ҵ���ҡ��ͤ���������� 3 �������ҡ '�ǡ�Ҵ�͡��' ��駷�����Է���ط�㹵������ ��������ö�֡������������ա�ҡ �����ͤ������������ͺ仡�ЫԺ '�͡����' ��������������ء����һ���ѵ� ����������稡� '�͡����' ��Ҵ�ç�ҹ��ҹ�ͷպ�ҹ��ҢҴ�Ź�е�� ����ͧ���ǵ��ҹ ������ 'ᾪ���' �ѡ������¹��� �������ҧ�͡��������ͧ<br />
<br />
�ҹ�ͷն������� 'self-change management' ����ʹ�ҡ ����ѡ�ѹ��ԧ���ʹ�ҡ ������ͺ���¹������ͺ��ҹ˹ѧ��͡稺��� �֧�Ҥ��ͷ������Թ 40 ����¹ѡ��Ҥ�͡�� ��ǹ��Ҥ�Ѱ����Ẻ�Թ 40 ���Ƿ�駹�� �ҵ�ӡ��� 40 ���� <img src='http://www.narisa.com/forums//public/style_emoticons/default/biggrin.png' class='bbc_emoticon' alt=':D' /> �˵����Ф��ͷ�����ǹ��������Թ���ѡ����è֧��Թ�ҹ�Ҥ�Ѱ ����ɹѡ�ͷ������Թ 40 ��Ҥ�Ѱ����������ش�<br />
<br />
�ҡ����¹�ŧ����ͧ��������� ���ѹ�Ѻ෤�������� '�š' �������¹�����ʹ���� ��о��͡����������� �����͡���ѡ�Ҿ�����������¹�ŧ<br />
<br />
�ç�� �ѹ��������<br />
� �ѹ�Ҥ� �.�. ����]]></description>
		<pubDate>Mon, 08 Dec 2014 05:49:00 +0000</pubDate>
		<guid><![CDATA[http://www.narisa.com/forums/index.php?app=blog&blogid=21&showentry=3107]]></guid>
	</item>
	<item>
		<title><![CDATA[up1's Blog - �������¹ Blog ��� somkiat.cc �Ф�Ѻ]]></title>
		<link><![CDATA[http://www.narisa.com/forums/index.php?app=blog&blogid=9&showentry=3106]]></link>
		<category></category>
		<description><![CDATA[�͹�����������¹ Blog �����Ф�Ѻ<br />
<br />
<a href='http://www.somkiat.cc/' class='bbc_url' title='' rel='nofollow'>Somkiat.CC</a>]]></description>
		<pubDate>Mon, 12 May 2014 17:22:00 +0000</pubDate>
		<guid><![CDATA[http://www.narisa.com/forums/index.php?app=blog&blogid=9&showentry=3106]]></guid>
	</item>
	<item>
		<title><![CDATA[up1's Blog - ��ػ�ҡ�ҹ Big Data �Դ˹���]]></title>
		<link><![CDATA[http://www.narisa.com/forums/index.php?app=blog&blogid=9&showentry=3105]]></link>
		<category></category>
		<description><![CDATA[<span style='font-size: 14px;'><span style='font-family: Arial'>�ѹ���������ҹ Big Data ��觨Ѵ�¡���� <a href='http://www.facebook.com/groups/javaplatforminth/' class='bbc_url' title='' rel='nofollow'>JavaPlatformInTH</a></span><br />
<span style='font-family: Arial'>�Ѵ��� Oracle Thailand</span><br />
<br />
<span style='font-family: Arial'>�µ����ѡ�ͧ�ҹ����� </span></span>SUT Aiyara Cluster<span style='font-size: 14px;'><span style='font-family: Arial'> �ͧ����Է�����෤�������ù���</span><br />
<br />
<strong class='bbc'><span style='font-family: Arial'>������鹴��º���ҡ�Ȣͧ�ҹ</span></strong><br />
<span style='font-family: Arial'>�Ҩ�дٵСء�Сѡ����ͧ��þ����� setup ������ͧ��ͧ仴��¡ѹ</span><br />
<span style='font-family: Arial'>�� set ����� �����䢴��¡���¡�͡���ͧ��ͧ������Ѻ�ѹ����</span><br />
<span style='font-family: Arial'>��仴����Ҩ����͹˹���������� ������Դ���� ����Ѵ��</span><br />
<span style='font-family: Arial'>�ѭ������ҹ��������з��Ѻ�ҹ�����</span><br />
<br />
<strong class='bbc'><span style='font-family: Arial'>�Ҷ֧�����ҡѹ��ҧ (��仪������������ͧ����ͧ)</span></strong><br />
<span style='font-family: Arial'>����ͧ��� �Ҩ���� @chanwit �繤��ٴ</span></span><br />
<br />
<br />
<br />
<span style='font-size: 14px;'><strong class='bbc'><span style='font-family: Arial'>��������¤������Ңͧ�ǤԴ Big data �Ѻ�ҧ Java</span></strong><br />
<span style='font-family: Arial'>��觵ç���ŧ件֧�дѺ class loader �ѹ���</span><br />
<span style='font-family: Arial'>�����駾ٴ�֧ trend �������Һ�ôҤ���Ǵǧ JVM �ӡѹ �������价ҧ Big data</span></span><br />
<br />
<strong class='bbc'><span style='font-size: 14px;'><span style='font-family: Arial'>��Ҵ�ͧ Big data ������� </span></span></strong><br />
<span style='font-size: 14px;'><span style='font-family: Arial'>��ӵͺ�����</span><br />
<span style='font-family: Arial'>�¤������¤�� 15 Gb ������ ����� text file</span><br />
<span style='font-family: Arial'>�� </span></span>SUT Aiyara Cluster<span style='font-size: 14px;'><span style='font-family: Arial'> �ӧҹ������ 34 Gb �Ѵ� 2 ��Ңͧ�������� </span><br />
<br />
<strong class='bbc'><span style='font-family: Arial'>�ǤԴ��û����ż�Ẻ��ҹ������鹨ҡ</span></strong></span><br />
<span style='font-size: 14px;'><span style='font-family: Arial'>�ҧ Google ���й�����ͧ Map Reduce �͡��</span><br />
<span style='font-family: Arial'>�����º�Ѻ�ش����� SQL ���ǹ��</span><br />
<span style='font-family: Arial'>Map ��͡�� Select ������</span><br />
<span style='font-family: Arial'>Reduce ��͡�� Group �����Ź���ͧ</span><br />
<br />
<strong class='bbc'><span style='font-family: Arial'>�����¹ Map-Reduce �����¹�� 2 Ẻ���</span></strong><br />
<span style='font-family: Arial'>1. ��¹�� Hadoop Map-Reduce</span><br />
<span style='font-family: Arial'>2. ��¹���� Functional language ��觡�÷ӧҹ�ѹ��Ẻ lazy</span><br />
<span style='font-family: Arial'>�����������¡�� function �����ѹ���ѧ���ӧҹ�ѹ�� �����ҡѺ�ǤԴ Map-Reduce ���</span><br />
<span style='font-family: Arial'>�ѧ��鹨֧���¡���Ըչ��᷹ Hadoop Map-Reduce</span><br />
<span style='font-family: Arial'>����ա�˵ؼš��� Hadoop Map-Reduce �ѹ�� I/O �٧�ҡ�</span><br />
<span style='font-family: Arial'>������Ҩзӡ����¹������ŧ����ʹ����</span><br />
<br />
<strong class='bbc'><span style='font-family: Arial'>෤����շ���� ��Сͺ仴���</span></strong><br />
<span style='font-family: Arial'>1. Apache Spark ��觷� Map-Reduce �� memory �����ش� </span><br />
<span style='font-family: Arial'>��� web �͡���������ǡ��� Hadoop Map-Reduce ���ӧҹ�� memory 100 ���</span><br />
<span style='font-family: Arial'>2. ��ҹ Hadoop ੾����ǹ�ͧ HDFS ��ҹ�� ��觻�Сͺ仴��� Name node ��� Data node</span><br />
<span style='font-family: Arial'>��� </span></span>SUT Aiyara Cluster<span style='font-size: 14px;'><span style='font-family: Arial'> ����� Data node �ӹǹ 22 node</span><br />
<br />
<strong class='bbc'><span style='font-family: Arial'>�դӶ����� Apache Spark �ѹ�ӧҹ�� memory �ѧ��鹶���ա�÷ӧҹ�Դ��Ҵ�������� ���Դ�ѭ���������</span></strong><br />
<span style='font-family: Arial'>�ӵͺ��� Apache Spark ����դ�������ö㹡�èѴ�������ͧ����� Resilient Distributed Dataset(RDD) �Ѵ��������������</span><br />
<br />
<span style='font-family: Arial'><strong class='bbc'>������͡�� ARM</strong> </span></span><br />
<span style='font-size: 14px;'><span style='font-family: Arial'>���ͧ�ҡ���㹻���ҳ������ �����Ѵ���ͷ��</span><br />
<span style='font-family: Arial'>��觪���Ŵ��� operation cost ��ҧ� �ҡ��� ��</span><br />
<span style='font-family: Arial'>��� Data center </span><br />
<span style='font-family: Arial'>����</span><br />
<span style='font-family: Arial'>�������</span><br />
<span style='font-family: Arial'>������� �ա�ҡ���</span><br />
<br />
<strong class='bbc'><span style='font-family: Arial'>���˹�觷���Ҩ���� @chanwit �͡��¡���</span></strong><br />
<span style='font-family: Arial'>���Ƿ��ŧ仹���ѹ�Դ ���ͧ�ҡ�ҧ�ӹѡ������������ա</span><br />
<span style='font-family: Arial'>���͡����� Super Computer ����ͧ�á��������</span><br />
<span style='font-family: Arial'>����蹹�鹨з�������㨼Դ��</span></span><br />
<br />
<span style='font-size: 14px;'><strong class='bbc'><span style='font-family: Arial'>�ҡ����֡�ҵ�ҧ� �ͧ���������ҧ�͡������</span></strong><br />
<span style='font-family: Arial'>�����¹������õ�ҧ� �ҡ��� �ҡ���ŧ��ͷӡѺ�ͧ��ԧ</span><br />
<span style='font-family: Arial'>����������¹����ҧ�&nbsp;&nbsp;�������ҧ�Ǵ����</span><br />
<span style='font-family: Arial'>������¡��ʹբͧ��÷���ػ�ó��ҧ� �����§�� </span><br />
<span style='font-family: Arial'>�������繾ĵԡ�����÷ӧҹ��ҧ� �ͧ�к��ҹ���ҧ�ҡ</span><br />
<span style='font-family: Arial'>�����駨��������� �ա��������ͨҡ������ǹ ���������ҧ programming</span><br />
<span style='font-family: Arial'>���ѧ�� ���ǡ���俿�� ����˹��§ҹ���� ����Ҫ��¡ѹ���ҧ</span><br />
<br />
<strong class='bbc'><span style='font-family: Arial'>�ա�ǤԴ˹�觷����ʹ㨡���</span></strong><br />
<span style='font-family: Arial'>���ҧ��ǹ������������餹��Ҷ֧��û����ż�Ẻ��ҹ����¢��</span><br />
<span style='font-family: Arial'>���������ö���¹���ҡ�����ҹ���ŧ��ͷӨ�ԧ�</span><br />
<span style='font-family: Arial'>�ѹ��˹���Ƿҧ㹡�����ҧ programmer/developer ���ͻ�͹��Ҵ ��������ҡ��ѧ drama � pantip</span><br />
<br />
<strong class='bbc'><span style='font-family: Arial'>����ѧ�͡�����š�ͧ Startup ��������������ҧ app �� mobile </span></strong><br />
<span style='font-family: Arial'>��� Startup ��¡��ѧ���ѹ�������</span><br />
<span style='font-family: Arial'>����ͧ�ǡ Big data ������ʹ��ҡ</span><br />
<span style='font-family: Arial'>������Ң�Ҵ�ͧ��Ҵ�˭� ���դ��ҷӹ���</span><br />
<span style='font-family: Arial'>��觶��������͡�ʷ����ʹ��� ����Դ AEC ���������͡������ҡ</span><br />
<span style='font-family: Arial'>�ѧ��鹵ç������Դ�����š�ҡ�</span><br />
<br />
<strong class='bbc'><span style='font-family: Arial'>��ǹ application �������ö������ҹ��������� ��</span></strong><br />
<span style='font-family: Arial'>�к��ҧ����Թ</span><br />
<span style='font-family: Arial'>��÷ӹ�µ�Ҵ</span><br />
<span style='font-family: Arial'>������������������ҧ�</span><br />
<span style='font-family: Arial'>�����żŷҧ���� image</span><br />
<span style='font-family: Arial'>�ҧ��ҹ e-commerce</span><br />
<span style='font-family: Arial'>Real time processing</span><br />
<br />
<span style='font-family: Arial'><strong class='bbc'>�ѭ�ҷ�辺�ҡ������ҧ</strong> </span></span><br />
<span style='font-size: 14px;'><span style='font-family: Arial'>�������ͧ��������</span><br />
<span style='font-family: Arial'>���������٧�ش�͹���������������Ǣͧ network ��������á�������������� 100 Mbps</span><br />
<span style='font-family: Arial'>����繤͢Ǵ�ͧ�к�</span><br />
<span style='font-family: Arial'>��������ѹ���仨�����¹�� Gigabit ������ǡ�����͹ �ʹ١ѹ���令�Ѻ</span><br />
<br />
<span style='font-size: 18px;'><span style='font-family: Arial'>㹡�����͡������ͧ����� ��÷����֡�Ң�ͨӡѴ���͢ͺࢵ�ͧ�ҹ��͹ �������͡���ç�Ѻ�ҹ</span><br />
<span style='font-family: Arial'>������ҧ�� Hadoop Map-Reduce �ѹ�Թ I/O �ҡ� ��������������Ѻ�ͺࢵ�ͧ�ҹ���֧�����ҹ�ѹ</span></span></span><br />
<br />
<br />
<strong class='bbc'>˹�ҵҢͧ��� <span style='font-family: Arial'>SUT Aiyara Cluster �繴ѧ�ٻ</span></strong><br />
<br />
<br />
<br />
<strong class='bbc'><span style='font-size: 14px;'><span style='font-family: Arial'>������·���Ӥѭ�ͧ������ҧ ������¹Ẻ�Ҩҡ Agile Manifesto �ѧ���</span></span></strong><br />
<br />
<p class='citation'>Quote</p><div class="blockquote"><div class='quote'>�鹤���������͡Ѻ�Ҥ�ص��ˡ��� �ҡ���� ������Ѻ�ع�ҡ�Ҥ�Ѱ���¡ѹ ( Industry collaboration )</div></div>
<br />
<br />
<span style='font-size: 14px;'><strong class='bbc'><span style='font-family: Arial'>�Դ���´�����觷��������� solution ���� ���� killer feature ����</span></strong><br />
<span style='font-family: Arial'>����� DSL ������ҧ�������� Groovy �·����س����ö��ҹ��ҹ�ش�ͧ�� �ҡ������ҧ���¡�ҡ���</span><br />
<span style='font-family: Arial'>find the most frequent word</span><br />
<span style='font-family: Arial'>find the most frequent 10 words</span></span><br />
<br />
<br />
<br />
<span style='font-size: 14px;'><span style='font-family: Arial'>㹵͹���������� demo ��͵�Ƿ��������ҧ���� ����Ǥ�������������㹵�� Cluster �ѹ���</span><br />
<span style='font-family: Arial'>�ç��������ҡ� ��Ѻ �������Ըա�þѲ��</span><br />
<br />
<span style='font-family: Arial'>��§��ҹ�������ö���¡��ҹ Map-Reduce �ͧ </span></span>SUT Aiyara Cluster<span style='font-size: 14px;'><span style='font-family: Arial'> ������</span><br />
<span style='font-family: Arial'>�������ѧ����ö���ͧ��÷ӧҹ�ͧ Cluster �� windows ���ա���� (��������¤��� Mac)</span><br />
<br />
<span style='font-family: Arial'>�ش�������� �ѧ�͡��ҵ�� </span></span>SUT Aiyara Cluster <span style='font-size: 14px;'><span style='font-family: Arial'>����������ö���ҧ�ѹ����ҵ��������ͧ��âͧ�ҹ</span><br />
<span style='font-family: Arial'>�ѹ����ö���ҧ����� �͡Ẻ�����</span><br />
<br />
<br />
<strong class='bbc'><span style='font-family: Arial'>�ش���¨�ԧ� �ͺ�س @nuboat ��зէҹ ����Ѻ��èѴ�ҹ���駹���Ѻ</span></strong></span>]]></description>
		<pubDate>Sun, 06 Apr 2014 15:52:00 +0000</pubDate>
		<guid><![CDATA[http://www.narisa.com/forums/index.php?app=blog&blogid=9&showentry=3105]]></guid>
	</item>
	<item>
		<title><![CDATA[up1's Blog - [��] �ǻ�Ժѵ� 10 �������ͧ Continuous Integration]]></title>
		<link><![CDATA[http://www.narisa.com/forums/index.php?app=blog&blogid=9&showentry=3104]]></link>
		<category></category>
		<description><![CDATA[<span style='font-size: 14px;'><span style='font-family: Arial'>��͹�Դ������¹ Continuous Integration with Jenkins �����ͺ��� 1 ��觼�ҹ����ǹ��</span></span><br />
<span style='font-size: 14px;'><span style='font-family: Arial'>������ͺ����������ʹ㨢ͧ Martin Fowler ��� </span><a href='http://martinfowler.com/articles/continuousIntegration.html' class='bbc_url' title='' rel='nofollow'><span style='font-family: Arial'>Continuous Integration</span></a><br />
<br />
<span style='font-family: Arial'>��㹺����������ٴ�֧�ǻ�Ժѵ� 10 ��ͧ͢ Continuous Integration</span><br />
<span style='font-family: Arial'>��觹��ʹ��ҡ� �����ػ����������㨢ͧ����ͧ</span><br />
<span style='font-family: Arial'>�ǤԴ�Ҩ�����˹��� ���ѧ�������������Ӥѭ���ҧ�ҡ</span><br />
<span style='font-family: Arial'>��Сͺ仴����ǻ�ԺѵԵ�ҧ� �ѧ���</span><br />
<br />
<span style='font-family: Arial'><strong class='bbc'>1. Maintain a single source repository</strong></span><br />
<span style='font-family: Arial'>�ء� ���ҧ�����繵�͡�� build �к��������� repository ���ǡѹ</span><br />
<span style='font-family: Arial'>�������� ����ö�ӡ�� build ������ͧ����� �����</span><br />
<span style='font-family: Arial'>�������ͧ�����ǡ version control ���</span><br />
<span style='font-family: Arial'>�й������ main branch 㹡�þѲ���к���§ branch ����</span><br />
<span style='font-family: Arial'>���ͧ�ҡ������ҡ ����Դ�ѭ���ҡ</span><br />
<span style='font-family: Arial'>�ѧ��鹶�Ҥس�� branch ��ѡ㹡�÷ӧҹ��§ branch ��������</span><br />
<span style='font-family: Arial'>�س����������� �ѹ�ѧ���ӧҹ����������</span><br />
<span style='font-family: Arial'>�Ҩ���� branch ���� �������&nbsp;&nbsp;fix bug ����Ѻ�����䢢�ͼԴ��Ҵ�� production</span><br />
<span style='font-family: Arial'>���� branch ���Ǥ�������Ѻ��÷��ͧ���úҧ���ҧ</span></span><br />
<br />
<br />
<span style='font-size: 14px;'><span style='font-family: Arial'><strong class='bbc'>2. Automate the build</strong></span><br />
<span style='font-family: Arial'>��èШ� deploy ���� run �к�����ѡ���ա�кǹ��÷��Ѻ��͹</span><br />
<span style='font-family: Arial'>�蹡�� compile ��� copy ����������� ������ҧ������� schema database</span><br />
<span style='font-family: Arial'>�������Ҩ���ա�кǹ������� �ա�ҡ���</span><br />
<span style='font-family: Arial'>����ǹ�˭��ѡ�зӡ�кǹ��ôѧ�����Ẻ manual</span><br />
<span style='font-family: Arial'>����٭���������ѹ�դ������ҧ�ҡ</span><br />
<span style='font-family: Arial'>�ѧ��� �������¹��� automated ������</span><br />
<br />
<span style='font-family: Arial'>��㹡�� build ����ö������ͧ��͵�ҧ� �Ҫ�����</span><br />
<span style='font-family: Arial'>�� Java ����ö��ǡ Maven, Gradle ������</span><br />
<span style='font-family: Arial'>��������� build ����ªش��������� �ѹ�дǡʺ���ҡ</span><br />
<br />
<span style='font-family: Arial'>Automated build ���դ�÷���</span><br />
<span style='font-family: Arial'>����ö���� build ��� run ������ͧ����� �����</span><br />
<span style='font-family: Arial'>�ѧ�����Ҥ�÷ӵ���ǤԴ��� 1 �ҡ�͹��</span><br />
<br />
<span style='font-family: Arial'>�ҧ���Ҩ�к͡��� �к����Ѳ�������ѹ�˭��ҡ�</span><br />
<span style='font-family: Arial'>��� build Ẻ���ء� ���駷���ա������¹�ŧ �������ҡ�Թ�</span><br />
<span style='font-family: Arial'>�����䢡���¹Դ���� ��ӡ�� build ੾����ǹ��������</span><br />
<span style='font-family: Arial'>��������ͧ�ͧ�ѹ���ͧ����������ش���� �����駡������Ǣ�ͧ����</span><br />
<br />
<span style='font-family: Arial'>�ҧ���͡��ҩѹ�� IDE �Ҫ���㹡�� build �ء� ���ҧ��</span><br />
<span style='font-family: Arial'>�ж����� ����ͧ�ͧ���������ö��ҹ����� </span><br />
<span style='font-family: Arial'>���� configuration ����͹�ѹ������ ???</span><br />
<span style='font-family: Arial'>�������С� �й������ build server �ç��ҧ ���͵�Ǩ�ͺ��� build �ա����</span></span><br />
<br />
<br />
<span style='font-size: 14px;'><span style='font-family: Arial'><strong class='bbc'>3. Make your build self-testing</strong></span><br />
<span style='font-family: Arial'>�����ͧ�س��ͧ�ժش�ͧ��÷��ͺ���ӧҹͺ��ѵ��ѵ�</span><br />
<span style='font-family: Arial'>�������Ǩ�ͺ�к��ͧ�س </span><br />
<span style='font-family: Arial'>�����Ң�ͼԴ��Ҵ��ҧ�ͧ�к�</span><br />
<span style='font-family: Arial'>����ö��Ǩ�ͺ���ªش��������� �����</span><br />
<span style='font-family: Arial'>�š�÷��ͺ��÷��к͡������Ҽ�ҹ�������ҹ�����������</span><br />
<span style='font-family: Arial'>�ѧ��� �س�з������ҧ�� ������ӵ���ǤԴ TDD (Test-Driven Developement)</span><br />
<br />
<span style='font-family: Arial'>����������</span><br />
<span style='font-family: Arial'>��÷��ͺ����ǤԴ TDD ������Ң�ͼԴ��Ҵ㹷ء� ���ҧ</span><br />
<span style='font-family: Arial'>���ͷ����Ǩӹǹ��ͼԴ��Ҵ�����ٹ��</span><br />
<span style='font-family: Arial'>���������������÷�� perfect �����ء���ҧ��͡��</span><br />
<span style='font-family: Arial'>������� run ��÷��ͺ���� �����Ң�ͼԴ��Ҵ</span><br />
<span style='font-family: Arial'>�ҡ���� perfect test �������¶١��¹�������ҧ��� ���ҧ�˹�дա��ҡѹ</span><br />
<span style='font-family: Arial'>�ç����ͧ�Դ������ͧ !!!</span></span><br />
<br />
<br />
<span style='font-size: 14px;'><span style='font-family: Arial'><strong class='bbc'>4. Everyone Commits To the Mainline Every Day</strong></span><br />
<span style='font-family: Arial'>Integration ��� ��þٴ�����С�õԴ����������</span><br />
<span style='font-family: Arial'>Integration ͹حҵ������Ф�㹷���͡���ͤ�¡ѹ��� ����������¹�ŧ��ҧ</span><br />
<span style='font-family: Arial'>�ѧ��� ��觶�Ҥس�ٴ��¡ѹ�ҡ��к��¢�� ��з�������Ф�㹷�����������¹�ŧ��ҧ� �����ҧ�Ǵ����</span><br />
<br />
<span style='font-family: Arial'>�ѧ��� �ѹ���س commit �������¹�ŧ��ҧ� ��ѧ repository ��ҧ������§� ?</span><br />
<br />
<span style='font-family: Arial'>�¡�� commit ��÷���� branch ��ѡ���ӡ�� build ���� </span><br />
<span style='font-family: Arial'>���ͨ������������㹡�� merge ��� ( ����ö���ǤԴ Branch by abstract ��� Feature Toggle )</span><br />
<br />
<span style='font-family: Arial'>��� commit ����� �������繻ѭ�����ҧ�Ǵ����</span><br />
<span style='font-family: Arial'>�������������ҧ�Ǵ����</span><br />
<br />
<span style='font-family: Arial'>�Ҵ٢�鹵͹��� commit �������¹�ŧ ����èз��繴ѧ���</span><br />
<span style='font-family: Arial'>�֧�������¹�ŧ����ش�ҡ repository ��ҧ�ҷ������ͧ��͹</span><br />
<span style='font-family: Arial'>�ӡ�� run �ش���ͺ��Ҽ�ҹ������</span><br />
<span style='font-family: Arial'>�ӡ����䢵��������ͧ���</span><br />
<span style='font-family: Arial'>����ͷӡ��������� ���ӡ�� run �ش���ͺ����ҹ</span><br />
<span style='font-family: Arial'>�ӡ�ô֧�������¹�ŧ����ش�ҡ repository ��ҧ</span><br />
<span style='font-family: Arial'>����ա������¹�ŧ��� conflict �ѹ����䢫�</span><br />
<span style='font-family: Arial'>�ӡ�� run �ش���ͺ����ҹ�ա�ͺ</span><br />
<span style='font-family: Arial'>����ͷء���ҧ���º���� �֧�ӡ�� commit ��ѧ repository ��ҧ</span><br />
<span style='font-family: Arial'>��Ҥس�ӵ���Ƿҧ������� ������Դ�ѭ��㹡�÷ӧҹ</span><br />
<br />
<span style='font-family: Arial'>�ҧ�� �ҧ��� �͡�����ҷӡ�� commit �ء� �ѹ </span><br />
<span style='font-family: Arial'>�Ƿҧ���綷�������������� </span><br />
<span style='font-family: Arial'>�� 1 �ѹ�ѹ�ҹ���� ��Ҥ�÷��� commit �ء� �����ѹ ���� �ء� �������</span><br />
<span style='font-family: Arial'>�����Ѻ feedback ��÷ӧҹ</span><br />
<span style='font-family: Arial'>���;ٴ��¡�º��¢�� �ѹ�дա��ҹФ�Ѻ</span><br />
<span style='font-family: Arial'>�ͧ��ѻ�ا�ѹ�ٹ�</span></span><br />
<br />
<br />
<span style='font-size: 14px;'><span style='font-family: Arial'><strong class='bbc'>5. Every Commit Should Build the Mainline on an Integration Machine</strong></span><br />
<span style='font-family: Arial'>�ء� commit �е�ͧ�١ build �ҡ server ��������</span><br />
<span style='font-family: Arial'>�����������آ�Ҿ�ͧ�к��ҹ</span><br />
<span style='font-family: Arial'>��ҡ�� build �ѹ fail �ѹ�觺͡�֧�Թ��㹡�÷ӧҹ ��</span><br />
<span style='font-family: Arial'>�س�ӡ�� update �������¹�ŧ����ش����������</span><br />
<span style='font-family: Arial'>�س�� environment ���ᵡ��ҧ��������</span><br />
<span style='font-family: Arial'>�ѹ�����س��繢�ͼԴ��Ҵ ���ͻ�Ѻ��ا���բ��</span><br />
<br />
<span style='font-family: Arial'>����� build server ���� integration server ����ç��ҧ</span><br />
<span style='font-family: Arial'>���ͷ����������� �к��س�ѧ�ӧҹ�������آ�Ҿ����</span><br />
<span style='font-family: Arial'>�������¹�ŧ��ҧ� ��������к��ѹ�ѧ ���� build ������</span><br />
<span style='font-family: Arial'>�ѧ��� �����÷����բ�͵�ŧ�ѹ������</span><br />
<span style='font-family: Arial'>��� build server �ѧ����ҹ��������ᴧ ����������Ѻ��ҹ</span><br />
<span style='font-family: Arial'>�е�ͧ���¡ѹ�������ҹ��͹����</span><br />
<span style='font-family: Arial'>��Ẻ���价ء� �ѹ���Դ�繹����</span><br />
<span style='font-family: Arial'>�ѹ�з����س����ѡ�ѹ��Сѹ����</span><br />
<br />
<span style='font-family: Arial'>��ǹ build server �ç��ҧ��� ����ö�Ѵ����� 2 Ẻ��������ͺ ���</span><br />
<span style='font-family: Arial'>Ẻ manual ��� Ẻ automated ���� continuous integration server</span><br />
<br />
<span style='font-family: Arial'>�ҧ����Ҩ�к͡��� ����� nightly build �� ���ԧ� �����ѹ����� Continuous Integration ��</span><br />
<span style='font-family: Arial'>��������ѹ�ѧ����� ������ ��ҵ�ͧ��� feedback ���ͼš�÷ӧҹ����Ǵ����</span><br />
<span style='font-family: Arial'>������䢻ѭ�������ҧ�ѹ��ǧ��</span><br />
<br />
<span style='font-family: Arial'>�ѧ��� ��� commit����� build server �ѹ fail �������觷����������</span><br />
<span style='font-family: Arial'>���ѹ�͡��觷������ѧ��ͧ��Ѻ��ا ��������ѹ��ҹ��������</span><br />
<span style='font-family: Arial'>�������ҾѲ���к����躹��觷���ѹ�ѧ�ӧҹ�� ���آ�Ҿ������������</span><br />
<br />
<br />
<span style='font-family: Arial'><strong class='bbc'>6. Keep the Build Fast</strong></span><br />
<span style='font-family: Arial'>���㨢ͧ Continuous Integration ��� fast feedback</span><br />
<span style='font-family: Arial'>�ѧ��鹶�Ҥس�ӡ�����ҧ�к� Continuous Integration �����ѹ��� </span><br />
<span style='font-family: Arial'>����ʴ���Ҥس�ҼԴ�ҧ���ǹ�</span><br />
<br />
<span style='font-family: Arial'>��ǻ�ԺѵԢͧ XP programming �͡��Ҥ���� fast feedback �����������Թ 10 �ҷ�</span><br />
<span style='font-family: Arial'>�ѧ���������ҹ��� �س����ö价ӧҹ����������ա�ҡ</span><br />
<br />
<span style='font-family: Arial'>�������� �к��Ҩ�к͡��� �ѹ仪�ҷ��ǡ testing �� �������ҡ����������Թ </span><br />
<span style='font-family: Arial'>�� BDD, ATDD, UI, Performance</span><br />
<span style='font-family: Arial'>���Ǩз����ҧ�ô���� ?</span><br />
<span style='font-family: Arial'>�ӵͺ���� �� Build pipeline ������</span><br />
<span style='font-family: Arial'>�¡��÷��ͺ��ǹ��ҧ� �͡�ҡ�ѹ�繧ҹ����� �¡�ӧҹ�</span><br />
<span style='font-family: Arial'>��������ʹ�੾�� build process ��͹ ���ͧ�ҡ�դ����Ӥѭ�٧�ش</span><br />
<span style='font-family: Arial'>���ͧ�ҡ�� code ��ѡ�ͧ�к� ����ѹ�ѧ���آ�Ҿ���� ���� build ����ѧ������</span><br />
<span style='font-family: Arial'>��ǹ���� �ѹ�зӧҹ��� ����������ö�ͤ����</span></span><br />
<br />
<br />
<span style='font-size: 14px;'><span style='font-family: Arial'><strong class='bbc'>7. Test in a Clone of the Production Environment</strong></span><br />
<span style='font-family: Arial'>��÷��е�ͧ���ͺ���躹 environment ����͹�Ѻ server</span><br />
<span style='font-family: Arial'>�������Ҥ������͹�ѹ����ҡ����ش��ҷ��з���</span><br />
<span style='font-family: Arial'>�� Hardware, Software, IP, port ��ҧ� �繵�</span><br />
<span style='font-family: Arial'>���ͧ�ҡ�ѹ�з���������������� ������Դ�����Դ��Ҵ�š� ����� deploy ��� production server</span><br />
<span style='font-family: Arial'>��͹����͡ѹ����� ��͹ ����������������ͧ���������ҡ� �֧�ҡ����ش</span><br />
<br />
<span style='font-family: Arial'>㹻Ѩ�غѹ෤����մ��� Virtualization ��������͡������ �дǡʺ���ҡ�</span><br />
<span style='font-family: Arial'>�ѧ��� �������ö���ҧ test server ��������§�Ѻ production server</span><br />
<span style='font-family: Arial'>���¤������·���� ��о�ѧ�ҹ������ŧ</span></span><br />
<br />
<br />
<span style='font-size: 14px;'><span style='font-family: Arial'><strong class='bbc'>8. Make it Easy for Anyone to Get the Latest Executable</strong></span><br />
<span style='font-family: Arial'>��� ����㹷�����ͤ��������Ǣ�ͧ����ö��Ҷ֧�к��ҹ����ش������</span><br />
<span style='font-family: Arial'>������ҧ��� java project ��Ҩе�ͧ����ö�Ӿǡ WAR, EAR ����ش��� build ��ҹ </span><br />
<span style='font-family: Arial'>����ҹ��ѹ������͵�ͧ���</span><br />
<span style='font-family: Arial'>�������ҵ�ͧ���������� �зӡ�� build ����͹�� ��觼Դ�ҡ�</span></span><br />
<br />
<br />
<span style='font-size: 14px;'><strong class='bbc'><span style='font-family: Arial'>9. Everyone can see what's happening</span></strong><br />
<span style='font-family: Arial'>�ǻ�ԺѵԹ���Ӥѭ�ҡ� ��Ҥس�� Continuous Integration ���Ǥس��ͧ���</span><br />
<span style='font-family: Arial'>�����ʴ���������觷��س���ѧ��������� �ѹ�����ҧ��</span><br />
<span style='font-family: Arial'>���ͧ�ҡ Continuous Integration �ѹ��͡�þٴ��� �Դ����������</span><br />
<span style='font-family: Arial'>�ѧ��鹤س��ͧ������ҷء� ����ͧ�����觷��س�������ҧ�����</span><br />
<span style='font-family: Arial'>��觷����������� ��� ��¢�� projector �ѹ���</span><br />
<span style='font-family: Arial'>���Թ��ҹ���������</span><br />
<br />
<span style='font-family: Arial'>�����������§���ҹ�ҡ computer ��ҹ��</span><br />
<span style='font-family: Arial'>�ѧ����ö���� physical board ��</span><br />
<span style='font-family: Arial'>�蹡�ùӻ�ԷԹ��д���������</span><br />
<span style='font-family: Arial'>���Ƿӡ�д������������ѹ ���ͺ͡ʶҹС�÷��ͺ����</span><br />
<span style='font-family: Arial'>������÷ӧҹʹء�ҡ��觢��</span><br />
<br />
<span style='font-family: Arial'>�й���� �� Continuous Integration �ѹ��ͧ��ת�Ǻ�ҹ��Ѻ</span></span><br />
<br />
<br />
<span style='font-size: 14px;'><span style='font-family: Arial'><strong class='bbc'>10. Automate Deployment</strong></span><br />
<span style='font-family: Arial'>��к� Continuous Integration ��鹤�÷������ҡ���� 1 ����ͧ�����ҡ���� 1 VM</span><br />
<span style='font-family: Arial'>���ͧ�ҡ���������ö��鹵͹��� build �͡�ҡ��ǹ��÷��ͺẺ��ҧ� �����</span><br />
<span style='font-family: Arial'>�ѧ�����觷��س��ͧ��á��� ��� deploy �к��ҹŧ�����ͧ��ҧ� ��</span><br />
<span style='font-family: Arial'>dev server</span><br />
<span style='font-family: Arial'>test server</span><br />
<span style='font-family: Arial'>SIT server</span><br />
<span style='font-family: Arial'>SUT server</span><br />
<span style='font-family: Arial'>Staging server</span><br />
<span style='font-family: Arial'>Production server</span><br />
<span style='font-family: Arial'>�ӧҹẺ�ѵ��ѵԴ��¹�</span><br />
<span style='font-family: Arial'>�ͧ�Դ�ٶ�ҷ�Ẻ manual �йá��Ҵ�˹ (�С������� �Ѩ�غѹ��ҡ�ӡѹ���� &hellip; �����Դ�л�Ѻ��ا���բ�鹺�ҧ���� ??)</span></span><br />
<br />
<br />
<br />
<span style='font-size: 14px;'><span style='font-family: Arial'>�ѧ��鹶�Ҿٴ�֧����� Continuous Integration ����</span><br />
<span style='font-family: Arial'>�ͧ������ǻ�ԺѵԹ������ check list �����</span><br />
<span style='font-family: Arial'>�س�Ӣ���˹仺�ҧ</span><br />
<br />
<span style='font-family: Arial'>���������� Continuous Integration ����к�������㹡�þѲ����л�Ѻ��ا�Ф�Ѻ !!!</span></span><br />
<br />
<br />
<strong class='bbc'><span style='font-size: 18px;'><span style='font-family: Arial'>�͡ѹ㹪�����¹ </span><span style='font-family: Arial'>Continuous Integration with Jenkins �����ͺ��� 2 ����� ����Ѻ</span></span></strong><br />
<br />
<br />
<span style='font-size: 14px;'><span style='font-family: Arial'><strong class='bbc'>Reference Website</strong></span><br />
<span style='color: #042EEE'><span style='font-family: Arial'><span class='bbc_underline'><a href='http://martinfowler.com/articles/continuousIntegration.html' class='bbc_url' title='' rel='nofollow'>http://martinfowler....ntegration.html</a></span></span></span></span>]]></description>
		<pubDate>Sun, 06 Apr 2014 13:21:00 +0000</pubDate>
		<guid><![CDATA[http://www.narisa.com/forums/index.php?app=blog&blogid=9&showentry=3104]]></guid>
	</item>
	<item>
		<title><![CDATA[up1's Blog - �س�� compile ��� run ��������� Java ���ҧ�� �������� IDE ?]]></title>
		<link><![CDATA[http://www.narisa.com/forums/index.php?app=blog&blogid=9&showentry=3103]]></link>
		<category></category>
		<description><![CDATA[<span style='font-size: 14px;'><span style='font-family: Arial'><strong class='bbc'>�Ӷ��</strong></span><br />
<span style='font-family: Arial'>�س�� compile ��� run ��������� Java ���ҧ�� �������� IDE</span><br />
<br />
<span style='font-family: Arial'><strong class='bbc'>�ӵͺ</strong></span><br />
<span style='font-family: Arial'>��������� IDE ���</span><br />
<span style='font-family: Arial'>�������� IDE ���Ǩ�������</span><br />
<span style='font-family: Arial'>����� Eclipse �� ����� IDE</span><br />
<span style='font-family: Arial'>����� IntelliJ �� ����� IDE</span><br />
<span style='font-family: Arial'>��������</span><br />
<span style='font-family: Arial'>���ѧ����</span><br />
<span style='font-family: Arial'>������</span><br />
<br />
<br />
<span style='font-family: Arial'>��š��þѲ���к��ҹ�������� Java ���Ǿ���� 90% ���������ö��˹� JAVA_HOME, CLASSPATH ��� PATH ��</span><br />
<span style='font-family: Arial'>�ѹ���¶֧��� �س�������ö���� compile ��� run ���Ѳ���ͧ����� �������� IDE ������ build tool �����������</span><br />
<br />
<span style='font-family: Arial'>�ѧ��� ��͹���س�з����÷���ѹ�٧���ҡ�</span><br />
<span style='font-family: Arial'>���й����س��Ѻ�Ҵٷ���鹰ҹ��͹�����</span><br />
<span style='font-family: Arial'>��§���ͧ�ӡ�� compile ��� run ��ҹ command line</span><br />
<span style='font-family: Arial'>��к͡��Ҥس���㨡�÷ӧҹ�ͧ�ǡ JAVA_HOME, CLASSPATH ��� PATH ����Ѻ���� Java ����</span><br />
<br />
<span style='font-family: Arial'>�ͧ�Ҵ١�͹</span><br />
<br />
<span style='font-family: Arial'><strong class='bbc'>������ҧ��� 1 �����ҡ� </strong></span><br />
<span style='font-family: Arial'>��� HelloWorld.java</span><br />
<span style='font-family: Arial'>public class HelloWorld {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String[] args) {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&ldquo;Hello World&ldquo;);</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp; }</span><br />
<span style='font-family: Arial'>}</span><br />
<br />
<span style='font-family: Arial'>�ӡ�� compile ���¤����</span><br />
<span style='font-family: Arial'>$javac HelloWorld.java</span><br />
<br />
<span style='font-family: Arial'>�š�÷ӧҹ�����ҧ��������� HelloWorld.class �����</span><br />
<span style='font-family: Arial'>��зӡ�� run ���¤���觴ѧ���</span><br />
<span style='font-family: Arial'>$java HelloWorld</span><br />
<br />
<span style='font-family: Arial'><strong class='bbc'>������ҧ��� 2 �ç����ҡ����� �� package �������ç���ҧ�ѧ�ٻ</strong></span></span><br />
<br />
<br />
<span style='font-size: 14px;'><span style='font-family: Arial'>��� Base.java ����� package up1.demo</span></span><br />
<br />
<span style='font-size: 14px;'><span style='font-family: Arial'>package up1.demo;</span><br />
<br />
<span style='font-family: Arial'>public class Base {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public String toString() { return &ldquo;To String of Base&rdquo;; }</span><br />
<span style='font-family: Arial'>}</span><br />
<br />
<br />
<span style='font-family: Arial'>��� HelloWorld.java</span></span><br />
<br />
<span style='font-size: 14px;'><span style='font-family: Arial'>package up1.demo;</span><br />
<br />
<span style='font-family: Arial'>import static java.lang.System.out;</span><br />
<span style='font-family: Arial'>public class HelloWorld {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp; </span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;Base base = new Base();</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp; </span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String[] args) {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HelloWorld object = new HelloWorld();</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.println(object.base);</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp; }</span><br />
<span style='font-family: Arial'>} </span><br />
<br />
<span style='font-family: Arial'>��Ҩзӡ�� compile ��� run ���ҧ�� ??</span><br />
<span style='font-family: Arial'>�ͧ���ͺ����ͧ�٤�Ѻ ��ҷ��������ͧ仴٢�ҧ��ҧ���Ǥ�Ѻ</span><br />
<span style='font-family: Arial'>�س�������� ?</span><br />
<br />
<br />
<span style='font-family: Arial'><strong class='bbc'>��� compile ����ѧ���</strong></span><br />
<span style='font-family: Arial'>$javac -sourcepath src src/up1/demo/*.java</span><br />
<br />
<span style='font-family: Arial'><strong class='bbc'>��͸Ժ��</strong></span><br />
<span style='font-family: Arial'>�ӡ�á�˹� source folder ����� folder src</span><br />
<span style='font-family: Arial'>�����͡��׷���չ��ʡ�� .java</span><br />
<br />
<span style='font-family: Arial'>���Ըա������ �ա�Ф�Ѻ</span><br />
<br />
<span style='font-family: Arial'>�š�÷ӧҹ���� �Դ *.class � folder src/up1/demo �ѧ�ٻ</span></span><br />
<br />
<br />
<span style='font-size: 14px;'><span style='font-family: Arial'>������� ���Ҩ�к͡����ѹá� ����� *.class ������ folder �������� �� folder classes �ѧ���</span><br />
<span style='font-family: Arial'>$javac -sourcepath src&nbsp;&nbsp;-d classes&nbsp;&nbsp;src/up1/demo/*.java</span><br />
<br />
<span style='font-family: Arial'>�š�÷ӧҹ �繴ѧ�ٻ</span></span><br />
<br />
<br />
<span style='font-size: 14px;'><span style='font-family: Arial'><strong class='bbc'>���Ǩ� run ���ҧ����� ?</strong></span><br />
<span style='font-family: Arial'>����ö������ java �ѧ���</span><br />
<span style='font-family: Arial'>$java -cp classes up1.demo.HelloWorld</span><br />
<br />
<span style='font-family: Arial'><strong class='bbc'>��͸Ժ��</strong></span><br />
<span style='font-family: Arial'>������ӧҹ���¤���� java</span><br />
<span style='font-family: Arial'>��˹� classpath ���仴���� class �ҡ folder classes</span><br />
<span style='font-family: Arial'>�ӡ�� run �ҡ class&nbsp;&nbsp;up1.demo.HelloWorld</span><br />
<br />
<br />
<span style='font-family: Arial'>�ͧ��Ѻ�����ҧ��鹰ҹ����蹤�Ѻ ��͹�������ҧ������������ ���͵���ʹ�����蹤���Ѻ</span></span>]]></description>
		<pubDate>Sat, 05 Apr 2014 10:24:00 +0000</pubDate>
		<guid><![CDATA[http://www.narisa.com/forums/index.php?app=blog&blogid=9&showentry=3103]]></guid>
	</item>
	<item>
		<title><![CDATA[up1's Blog - SOLID Part 5 :: �ǤԴ Dependency Inversion Principle]]></title>
		<link><![CDATA[http://www.narisa.com/forums/index.php?app=blog&blogid=9&showentry=3102]]></link>
		<category></category>
		<description><![CDATA[<span style='font-size: 14px;'><span style='font-family: Arial'>������ǡ��Ҷ֧����ش���¢ͧ SOLID ��蹡��� D</span><br />
<span style='font-family: Arial'>D = Dependency Inversion Principle (DIP)</span><br />
<br />
<span style='font-family: Arial'>�ǤԴ�������ǤԴ����ͺ���� SOLID ������</span><br />
<span style='font-family: Arial'>�ѧ��� ��ҵ�ͧ���������֡���й�������������ǤԴ��������</span><br />
<br />
<strong class='bbc'><span style='font-family: Arial'>�ӨӡѴ�����ͧ DIP �繴ѧ���</span></strong><br />
<span style='font-family: Arial'>��ǹ��÷ӧҹ�ͧ High level �����١�Դ�Ѻ��ǹ�ӧҹ Low level</span><br />
<span style='font-family: Arial'>�����ͧ��ǹ������ѹ��ѹ��ҹ abstraction layer</span><br />
<span style='font-family: Arial'>�� abstraction layer �������ء�Դ�Ѻ��������´��÷ӧҹ��ҧ� ���</span><br />
<span style='font-family: Arial'>����ǹ��÷ӧҹ���� �ж١�١�Դ�Ѻ abstraction layer ���� ����</span><br />
<br />
<br />
<strong class='bbc'><span style='font-family: Arial'>������ҧ�к����Ѳ��㹻Ѩ�غѹ�ѡ�л�Сͺ仴���</span></strong><br />
<span style='font-family: Arial'>1. Client tier</span><br />
<span style='font-family: Arial'>2. Web tier</span><br />
<span style='font-family: Arial'>3. Business tier</span><br />
<span style='font-family: Arial'>4. Persistence tier</span><br />
<br />
<span style='font-family: Arial'>����ǹ�˭�ء�&nbsp;&nbsp;tier �ѡ���Ѵ�ͧ����ѹ �����к��͡��</span><br />
<span style='font-family: Arial'>�ҧ�����¡�ѹ��� ʻ�ࡵ��� code ���ͧ�ҡ�ѹ�Ѵ�ѹ��������ԧ����</span><br />
<span style='font-family: Arial'>�����Ҩ�����¡����к� zombie</span><br />
<span style='font-family: Arial'>�Ť�� �ѹ�ӧҹ��� ���ô����ѡ���ҡ�ҡ� �������͵�ͧ������ ����¹�ŧ�����ѡ���ҧ ��觷��ҹ</span><br />
<span style='font-family: Arial'>�ҧ��������ҹҹ�ҡ</span><br />
<span style='font-family: Arial'>���µ�����¤� �й���� �������觡Ѻ�ѹ��� �ѹ�ӧҹ����������</span><br />
<span style='font-family: Arial'>��������蹹�� ���ҧ�ѹ������������</span><br />
<br />
<span style='font-family: Arial'>�ѧ��� �����������ҡ���˵ء�ó�����ҹ�� �й�����ִ��ѡ�ͧ SOLID</span><br />
<span style='font-family: Arial'>���͹�����ҧ�к������ ������ö������ҡ�ǤԴ IDP ����͹�����</span><br />
<br />
<span style='font-family: Arial'>�����й���� ��������þ㹧ҹ�ͧ���</span><br />
<span style='font-family: Arial'>���ѹ���ҧ�� ����͹�Ѻ������ҧ�ҹ��Ż� ����ͧ�ԶվԶѹ�ѹ�ء��鹵͹</span><br />
<span style='font-family: Arial'>��е�ͧ������ѹ�բ��������� ���ҧ�����ش���</span><br />
<br />
<span style='font-family: Arial'>��㹡�����ҧ�к���ҧ�鹤�������ѡɳй��</span><br />
<br />
<strong class='bbc'><span style='font-family: Arial'>1. ���ǹ�ͧ Web tier&nbsp;&nbsp;��� Client tier �ѡ���� MVC </span></strong><br />
<span style='font-family: Arial'>���¡��ǹ business logic �͡�Ҩҡ MVC</span><br />
<span style='font-family: Arial'>�������ӧҹ��ҹ��ǹ����� abstraction ���� interface</span><br />
<span style='font-family: Arial'>�ѧ�����ǹ�ͧ business logic �����١�Դ�Ѻ��ǹ UI ��� MVC ���</span><br />
<br />
<strong class='bbc'><span style='font-family: Arial'>2. ���ǹ�ͧ Persistence tier �������ǡѹ �Ҩ����ҹ�����žǡ MySQL, PostgreSQL</span></strong><br />
<span style='font-family: Arial'>��觼١�Դ�Ѻ��ǹ business logic �ҡ�</span><br />
<span style='font-family: Arial'>�ѧ�����Ҥ�����ӧҹ��ҹ interface ��</span><br />
<span style='font-family: Arial'>������������ö����¹�ŧ��觵�ҧ� ��������з���� business logic �� ���</span><br />
<br />
<strong class='bbc'><span style='font-family: Arial'>3. ���ǹ�ͧ Builess tier</span></strong><br />
<span style='font-family: Arial'>�������ö���ҧ class �ӹǹ�ҡ ���ͷӧҹ���ǹ�ͧ business logic</span><br />
<span style='font-family: Arial'>�� object �����ҵ�ͧ��á��� business object ����ա�÷ӧҹ���á������� ��ӧҹ����������������ͧ���</span><br />
<span style='font-family: Arial'>����ö�� design pattern ��ҧ� �� ��&nbsp;&nbsp;Factory, Builder ��� Plain object �繵�</span><br />
<span style='font-family: Arial'>�������������ҧ价��� class ���ͧ�ҡ���� class ������ҧ�С�͹����Դ class ����� ���������</span><br />
<br />
<strong class='bbc'><span style='font-family: Arial'>�Ҵٵ�����ҧ code �������ҹ��ǤԴ IDP ����ҹ</span></strong><br />
<br />
<span style='font-family: Arial'>��ҵ�ͧ������ҧ PDFReader ����� ����ҹ�ҡ PDFBook ����ö��¹ code ��ѧ���</span><br />
<span style='font-family: Arial'>class Client {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void read() {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDFBook pdfBook = new PDFBook();</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDFReader pdfReader = new PDFReader( pdfBook );</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pdfReader.read();</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} </span><br />
<span style='font-family: Arial'>}</span><br />
<br />
<span style='font-family: Arial'>class PDFBook {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public String read() { return &ldquo;PDF&rdquo;; }</span><br />
<span style='font-family: Arial'>}</span><br />
<br />
<span style='font-family: Arial'>class PDFReader {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private PDFBook book;</span><br />
<br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public PDFReader( PDFBook book ) {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.book= book;</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><br />
<br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void read() { this.book.read(); }</span><br />
<span style='font-family: Arial'>}</span><br />
<br />
<span style='font-family: Arial'>�������� PDFReader �Ҩ��੾����Ш��ҡ� �ѧ�������ö����¹������ EBookReader �����</span><br />
<span style='font-family: Arial'>�������Ҩ���������� EBookReader �ѹ�١�Դ�Ѻ PDFBook �ҡ�Թ�</span><br />
<span style='font-family: Arial'>�ѧ����������ö�¡ dependency �͡�ҡ�ѹ���� abstraction layer �ѧ���</span><br />
<br />
<span style='font-family: Arial'>interface EBook {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;public String read();</span><br />
<span style='font-family: Arial'>}</span><br />
<br />
<span style='font-family: Arial'>class PDFBook extends Ebook {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public String read() { return &ldquo;PDF&rdquo;; }</span><br />
<span style='font-family: Arial'>} </span><br />
<br />
<span style='font-family: Arial'>class EBookReader {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private EBook book;</span><br />
<br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public PDFReader( EBook book ) {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;book= book;</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><br />
<br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void read() { this.book.read(); }</span><br />
<span style='font-family: Arial'>} </span><br />
<br />
<span style='font-family: Arial'>���������ҹ���躹 abstraction layer ���� ��仵���ǤԴ IDP</span><br />
<span style='font-family: Arial'>��ж���ѧࡵ�����ѹ��͡�÷ӵ���ǤԴ ISP �ա����</span><br />
<span style='font-family: Arial'>����繡�����ҧ interface �������������� client </span><br />
<span style='font-family: Arial'>㹵͹�������¡ dependency �͡���ͧ��ǹ���ǹ�����</span><br />
<br />
<br />
<span style='font-family: Arial'>�ѧ��鹵���Ƿҧ��� ������ö���� EBook ��Դ��ҧ� ������������ MobiBook ����Ѻ�����ҹ�� Kindle</span><br />
<span style='font-family: Arial'>class MobiBook extends Ebook {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public String read() { return &ldquo;Mobi&rdquo;; }</span><br />
<span style='font-family: Arial'>} </span><br />
<br />
<span style='font-family: Arial'>�¡���������������з��Ѻ code ������ �����仵���ǤԴ OCP �ա������</span><br />
<br />
<span style='font-family: Arial'><strong class='bbc'>�����ػ</strong></span><br />
<span style='font-family: Arial'>���ǤԴ����ѹ�������ҵ�ͧ����Ѻ������þ� 4 ��ͷ���ҹ�� ��蹡���</span><br />
<span style='font-family: Arial'>��ҵ�ͧ�ִ�Ƿҧ OCP</span><br />
<span style='font-family: Arial'>��ҵ�ͧ�¡˹�ҷ������Ѻ�Դ�ͺ��ҧ� �͡�ҵ�� SRP</span><br />
<span style='font-family: Arial'>��ҵ�ͧ class �١����ա�÷ӧҹ���١��ͧ��� LSP</span><br />
<span style='font-family: Arial'>�����͹��ҵ�ͧ���ҧ interface ������� client ��ҹ��ǹ��ҧ�ͧ�к�</span></span>]]></description>
		<pubDate>Sat, 05 Apr 2014 08:44:00 +0000</pubDate>
		<guid><![CDATA[http://www.narisa.com/forums/index.php?app=blog&blogid=9&showentry=3102]]></guid>
	</item>
	<item>
		<title><![CDATA[up1's Blog - SOLID Part 4 :: �ǤԴ Interface Segregation Principle ( ISP )]]></title>
		<link><![CDATA[http://www.narisa.com/forums/index.php?app=blog&blogid=9&showentry=3101]]></link>
		<category></category>
		<description><![CDATA[<span style='font-size: 14px;'><span style='font-family: Arial'>�ҡ����ҹ�ҷ�� 3 part �����ػ�����</span></span><ul class='bbc'><li><span style='font-family: Arial'>Single Responsibility Principle(SRP) �ٴ�֧�����ҹ��Ҥ�÷����ռ����ҹ����������Ẻ���� ����Ŵ������</span><br /></li><li><span style='font-size: 14px;'><span style='font-family: Arial'>Open Closed Principle(OCP) �ٴ�֧����͡Ẻ class ��С��������������ö��ҧ� ������Ŵ�š�з����͡�������ǹ���ŧ�</span></span><br /></li><li><span style='font-size: 14px;'><span style='font-family: Arial'>Liskov Substitution Principle(LSP) �ٴ�֧��� inheritance ��� class �١ ����ͧ����з���÷ӧҹ�ͧ class ���</span></span></li></ul>
<br />
<span style='font-size: 14px;'><span style='font-family: Arial'>�����ǹ��� 4 ��� Interface Segregation Principle(ISP) �ٴ�֧��õԴ�������������͡����ҹ business logic �ҡ client</span><br />
<span style='font-family: Arial'>�����ͧ����͡Ẻ���� ��÷��Ы�͹��÷ӧҹ�������������ҹ���� client ���</span><br />
<span style='font-family: Arial'>�ҧ client �����ҹ��ҹ interface ������ҧ��੾�� client �������</span><br />
<br />
<span style='font-family: Arial'>�ѧ�������� module ��÷����� interface ������ client ���¡��ҹ business logic ��ҧ� �ͧ mofule ���</span><br />
<br />
<span style='font-family: Arial'>�ѭ�ҡ��� ���Ǩ����ҧ interface ˹�ҵ����ҧ�ô���� ??</span><br />
<br />
<span style='font-family: Arial'>����ǹ�ҡ㹡��������� �ѡ�����ҧ��§ interface ���������Ѵ method ��÷ӧҹ�ء� ���ҧŧ�������</span><br />
<span style='font-family: Arial'>����Ƿҧ�������ҧ���� ������ѡ���ҡ�ҡ</span><br />
<span style='font-family: Arial'>�ѧ��鹨֧�й����ӡ���¡�͡�� interface ���µ��˹�ҷ����÷ӧҹ��С�� implement</span><br />
<br />
<span style='font-family: Arial'>����� interface ������ҹ�����仺ѧ�Ѻ client �����ҹ</span><br />
<span style='font-family: Arial'>�� interface �١���ҧ������ client ���� ���</span><br />
<span style='font-family: Arial'>����ö�ѧࡵ������ ��� interface ��������ҹ��������ҹ�ú�ء method ������� !!</span><br />
<span style='font-family: Arial'>������ú�ʴ���ҡ���͡Ẻ interface �ջѭ������ !!</span><br />
<span style='font-family: Arial'>�ա��駵�ͧ�ִ�Ƿҧ�ͧ SRP 㹡�����ҧ interface ���¹Ф�Ѻ ���ҧ����索Ҵ !!</span><br />
<br />
<span style='font-family: Arial'>�����֡�Ƿҧ��������Դ��ǹ����ӫ�͹�ѹ�����</span><br />
<span style='font-family: Arial'>������������ interface �����ǹ�����ҡ�˹�˹�ҷ���÷ӧҹ��ҹ��</span><br />
<span style='font-family: Arial'>����ա�� implement ���</span><br />
<span style='font-family: Arial'>�ѧ��鹤�����ӫ�͹�й��� �������ö�Ѵ����� �ѧ��鹶������Ѻ��</span></span><br />
<br />
<br />
������ҧ��<br />
����ѡ�����ҧ interface ����Ǻ��� method ���͡�÷ӧҹ��ҧ� ���Ẻ��� ��觼Դ���ҧ�ع�ç<br />
<br />
interface All {<br />
&nbsp;&nbsp;&nbsp;&nbsp;void a1();<br />
&nbsp;&nbsp;&nbsp;&nbsp;void a2();<br />
&nbsp;&nbsp;&nbsp;&nbsp;void a3();<br />
&nbsp;&nbsp;&nbsp;&nbsp;void b1();<br />
&nbsp;&nbsp;&nbsp;&nbsp;void b2();<br />
&nbsp;&nbsp;&nbsp;&nbsp;void c1();<br />
&nbsp;&nbsp;&nbsp;&nbsp;void c2();&nbsp;&nbsp;<br />
}<br />
<br />
�ѧ�����觷����Ҥ�þԨ�óҡ��� client ������鹵�ͧ������è�ԧ�ѹ�� �������ҧ interface ����Ѻ client ���� ��<br />
<br />
interface ClientA {<br />
&nbsp;&nbsp;&nbsp;&nbsp;void a1();<br />
&nbsp;&nbsp;&nbsp;&nbsp;void a2();<br />
&nbsp;&nbsp;&nbsp;&nbsp;void a3();<br />
}<br />
<br />
interface ClientB {<br />
&nbsp;&nbsp;&nbsp;&nbsp;void b1();<br />
&nbsp;&nbsp;&nbsp;&nbsp;void b2();<br />
}<br />
<br />
�ѧࡵ������� interface ����������Ӥѭ�Ѻ client ����ѡ��ҷ����ú�ҧ��ԧ� �����仵���� SRP<br />
<br />
<br />
<span style='font-size: 14px;'><span style='font-family: Arial'><strong class='bbc'>����ػ���� </strong></span><br />
<span style='font-family: Arial'>ISP ����͹��������������Ҥ���������Ӥѭ�Ѻ client �ҡ� </span><br />
<span style='font-family: Arial'>�������� client ����ҹ���� ��ҡ��á�˹���ǹ��õԴ�����§��ҹ��</span><br />
<span style='font-family: Arial'>����������觵�ҧ� �����ҡ���Թ� �����ҡ���Ҥ�����ͧ�����ҹ</span></span>]]></description>
		<pubDate>Sat, 05 Apr 2014 02:14:00 +0000</pubDate>
		<guid><![CDATA[http://www.narisa.com/forums/index.php?app=blog&blogid=9&showentry=3101]]></guid>
	</item>
	<item>
		<title><![CDATA[up1's Blog - SOLID Part 3 : �� Liskov Substitution �ѹ�������]]></title>
		<link><![CDATA[http://www.narisa.com/forums/index.php?app=blog&blogid=9&showentry=3100]]></link>
		<category></category>
		<description><![CDATA[<span style='font-size: 14px;'><span style='font-family: Arial'>�������ǤԴ��� 3 � SOLID ��͵�� L =&gt; Liskov Substitution Priciple (LSP)</span><br />
<span style='font-family: Arial'>�ǤԴ������������� </span><br />
<br />
<p class='citation'>Quote</p><div class="blockquote"><div class='quote'>Child classes should never break the parent class' type definitions</div></div>
<br />
<br />
<span style='font-family: Arial'>�ŵç� ����� class �١��ͧ��������Դ���ͷ����˹�ҷ���÷ӧҹ�ͧ class ���</span><br />
<br />
<span style='font-family: Arial'>�ǤԴ����Դ�ҵ�����1987 ������Ѻ�����¹��������ŧ�վ����㹧ҹ�Ԫҡ�� ����¹�ӨӡѴ����������</span><br />
<br />
<p class='citation'>Quote</p><div class="blockquote"><div class='quote'>��� q(x) ��� object x �ͧ T ���� q(y) ��÷����� object y �ͧ S ����� S �׺�ʹ�Ҩҡ T</div></div>
<br />
<br />
<span style='font-family: Arial'>��ж١�ӡѴ�������ա ���</span><br />
<br />
<p class='citation'>Quote</p><div class="blockquote"><div class='quote'>class �١����׺�ʹ�Ҥ�÷���᷹�� class ��� �����</div></div>
<br />
<br />
<span style='font-family: Arial'>���ѹ������ ??</span><br />
<br />
<span style='font-family: Arial'>���¶֧ class �١��÷��� override ��������ö��ҧ� �Ҩҡ class ���</span><br />
<span style='font-family: Arial'>�·��������䢡�÷ӧҹ�ͧ��觼����ҹ</span><br />
<br />
<span style='font-family: Arial'>������ҧ��</span><br />
<span style='font-family: Arial'>class Parent {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp; public void methodA() { System.out.println(&ldquo;A parent"); }</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp; public void methodB() { System.out.println(&ldquo;B parent"); }</span><br />
<span style='font-family: Arial'>}</span><br />
<br />
<span style='font-family: Arial'>class SubClass1 extends Parent {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp; public void methodA() { System.out.println(&ldquo;A SubClass "); }</span><br />
<span style='font-family: Arial'>}</span><br />
<br />
<span style='font-family: Arial'>class SubClass2 extends Parent {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp; public void methodB() { System.out.println(&ldquo;B SubClass "); }</span><br />
<span style='font-family: Arial'>} </span><br />
<br />
<span style='font-family: Arial'>��㹽�觢ͧ�����ҹ����ö��ҹ������͹������</span><br />
<span style='font-family: Arial'>class Client {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;public void run(Parent parent) {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parent.methodA();</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parent.methodB();</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;}</span><br />
<span style='font-family: Arial'>}</span><br />
<br />
<span style='font-family: Arial'>���ѧࡵ����ҡ�� implements ����� Template method pattern ���� abstract class ����Ҫ���</span><br />
<span style='font-family: Arial'>��仵���ǤԴ OCP ��͹˹�ҹ�����</span><br />
<span style='font-family: Arial'>�ѧ����ǤԴ LSP ����դ�������ѹ�������Դ�Ѻ OCP ���ҧ�ҡ</span><br />
<span style='font-family: Arial'>�ѧ��鹶�ҼԴ���ҧ����ҧ˹�觨��觼���ѹ�����</span><br />
<br />
<span style='font-family: Arial'>�Ҵٵ�����ҧ�ͧ��ý�ҽ׹�� LSP �ѹ����������ҧ��</span><br />
<br />
<span style='font-family: Arial'>������ҧ�ͧ��äӹǳ��鹷������������ �繴ѧ���</span><br />
<span style='font-family: Arial'>class Rectangle {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;protected int width;</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;protected int height;</span><br />
<br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;//public getter/setter methods</span><br />
<br />
<span style='font-family: Arial'>&nbsp;&nbsp; public int getArea() {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.width * this.height;</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp; }</span><br />
<br />
<span style='font-family: Arial'>}</span><br />
<br />
<span style='font-family: Arial'>�����ҹ�ҡ Client �繴ѧ���</span><br />
<span style='font-family: Arial'>class Client {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;public void checkArea( Rectangle rectangle ) {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rectangle.setWidth(5);</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rectangle.setHeight(3);</span><br />
<br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( rectangle.getArea() != 15 )&nbsp;&nbsp;{ throw new Exception(&ldquo;Bad rectangle"); } </span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;}</span><br />
<span style='font-family: Arial'>}</span><br />
<br />
<span style='font-family: Arial'>�ء���ҧ���繻���&nbsp;&nbsp;������ͷӡ�����ҧ class �١������㹡�äӹǳ��鹷��ͧ�����������ѵ���� �ӡ�����ҧ class Square�ѧ���</span><br />
<br />
<span style='font-family: Arial'>class Square extends Rectangle {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp; public void setWidth( int width ) {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.width = width;</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.height = width;</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp; }</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp; public void setHeight( int height) {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.width = height;</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.height = height;</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp; } </span><br />
<span style='font-family: Arial'>}</span><br />
<br />
<span style='font-family: Arial'>�ѧ�������� client ���¡�����ҹ��ҹ Square �µç</span><br />
<br />
<span style='font-family: Arial'>Client client = new Client();</span><br />
<span style='font-family: Arial'>client.checkArea( new Square );</span><br />
<br />
<span style='font-family: Arial'>�š�÷ӧҹ��� �¹ exception �͡�� ���ͧ�ҡ��鹷��ͧ�������������仵�����</span><br />
<span style='font-family: Arial'>���ͧ�ҡ class �١�������ѹŧ����� ���ѹ����¡�äӹǳ��鹷��ͧ����������ŧ�</span><br />
<span style='font-family: Arial'>��蹤�͡�üԴ���ͧ LSP ����ͧ</span><br />
<span style='font-family: Arial'>��Шҡ������ҧ��� ��Ҿ����� map object �ҡ�š�����繨�ԧ���ѧ�š�ͧ OOP Ẻ˹�觵��˹��</span><br />
<span style='font-family: Arial'>����觼�����ѹ�Դ��ͼԴ��Ҵ �ѧ�����ҵ�ͧ�ͧ���ͧ abstraction ����ҡ���ҹ��</span></span>]]></description>
		<pubDate>Fri, 04 Apr 2014 17:01:06 +0000</pubDate>
		<guid><![CDATA[http://www.narisa.com/forums/index.php?app=blog&blogid=9&showentry=3100]]></guid>
	</item>
	<item>
		<title><![CDATA[up1's Blog - �ǤԴ����ͧ Test Automation �ҡ eBay]]></title>
		<link><![CDATA[http://www.narisa.com/forums/index.php?app=blog&blogid=9&showentry=3099]]></link>
		<category></category>
		<description><![CDATA[<span style='font-size: 14px;'><span style='font-family: Arial'>�Դ�����ҹ����������ͧ Test automation �ҡ�ҹ��ҧ� </span><br />
<span style='font-family: Arial'>��������ǤԴ�����ʹ�����ǡѺ Test automation �ҡ eBay</span><br />
<span style='font-family: Arial'>��͸Ժ�¶֧�ǤԴ����þ֧���֡�����������͵�ͧ�Өз�</span><br />
<span style='font-family: Arial'>��Сͺ仴�����觵�ҧ� �ѧ���</span><br />
<br />
<span style='font-family: Arial'>1. ����ͧ�ͧ Testing triangle </span><br />
<span style='font-family: Arial'>�ҡ����������Ӥѭ�����������仡Ѻ</span><br />
<span style='font-family: Arial'>Manual test &gt; End-to-End test &gt; Unit test</span><br />
<span style='font-family: Arial'>����</span><br />
<span style='font-family: Arial'>Unit test &gt; Integration test &gt; End-to-End test &gt; Manual test</span><br />
<br />
<span style='font-family: Arial'>��ػ���ٻ��ѧ���</span></span><br />
<br />
<br />
<span style='font-size: 14px;'><span style='font-family: Arial'>2.&nbsp;&nbsp;�֧���֡���������ҹ� tool ���繷���� �ͧ���������� Test automation</span><br />
<span style='font-family: Arial'>����蹹����Ҩж١�ѧ�Ѻ�ҡ tool ��ҧ�</span><br />
<span style='font-family: Arial'>�ѧ��� ��Ѻ�Ҿٴ���㹷���ѹ��͹ ������������͡�ͧ��Ҩ��� tool ����</span><br />
<span style='font-family: Arial'>tool ��ҧ� �ѹ������͹���س���ͺ�繹�</span><br />
<br />
<span style='font-family: Arial'>3. �ء����ͧ��������������ǡѺ��÷� Test automation</span><br />
<span style='font-family: Arial'>����ѹ���ѧ� �ջ���ª�����ҧ��</span><br />
<span style='font-family: Arial'>�������Ǩ���������������</span><br />
<span style='font-family: Arial'>�������������������§����褹�����������</span><br />
<br />
<span style='font-family: Arial'>4. ��¹ test ���١��ͧ �١��� �������Ҩз� automate 价���к�</span><br />
<span style='font-family: Arial'>���ʹ����ǹ����з��Ѻ bussiness �ҡ����ش��͹����</span><br />
<br />
<span style='font-family: Arial'>5.&nbsp;&nbsp;Feedback �Ӥѭ�ҡ ��е�ͧ�Ǵ����</span><br />
<span style='font-family: Arial'>�ѧ��鹤�è������������ 价��� feature</span><br />
<span style='font-family: Arial'>���Ƿӡ�� review 价���й��� ������</span><br />
<br />
<span style='font-family: Arial'>6. �֧���֡������ Automation ��͡�û�Ѻ��ا��оѲ�ҵ������ͧ����ҧ��������</span><br />
<br />
<span style='font-family: Arial'>7. ��ҷ� Automation test ���ǹ�� ��觷���ͧ�Դ�֧��¡��� ��ô����ѡ�� test ������</span><br />
<span style='font-family: Arial'>��駡����Ҷ֧��С�èѴ��� �ѧ��鹵�ͧ���͡��� process ��� tool ����������</span><br />
<br />
<span style='font-family: Arial'>8. Automation test ������������ǡѺ��¡�þѲ�� �����������÷�������ҡ����</span><br />
<span style='font-family: Arial'>����͹��ͧ�ٴ�������ǡѹ ����������㨵ç�ѹ</span><br />
<br />
<span style='font-family: Arial'>9. ŧ�ع����ǡѺ infrastructure �ͧ Test ���¹� ����蹹�鹷ء� ���ҧ�������ѹ�������</span><br />
<span style='font-family: Arial'>��������蹹�� �����Ӥѭ�ѹ�ж١�����Ŵŧ��ҡ</span><br />
<br />
<span style='font-family: Arial'>10. Manual test �ѧ���Ӥѭ����� ���÷���Ŵ�ҹ���ӫ��� ŧ�</span><br />
<span style='font-family: Arial'>������������觷���Ӥѭ�ҡ�ͧ��áԨ</span><br />
<span style='font-family: Arial'>���������������Ѻ�����������ͧ��÷��ͺ�ҡ��� ����ͧ�ͧ����к��ѧ�����</span><br />
<span style='font-family: Arial'>�����������Ӥѭ㹷ء��ǹ ����ѹ������ͧ��ѧ�ҹ���ͤ����������ҧ�ҡ</span><br />
<br />
<br />
<strong class='bbc'><span style='font-family: Arial'>Reference Website</span></strong><br />
<span style='color: #042EEE'><span style='font-family: Arial'><span class='bbc_underline'><a href='http://www.slideshare.net/andreicontan/10-lessons-learned-in-test-automation' class='bbc_url' title='' rel='nofollow'>http://www.slideshar...test-automation</a></span></span></span></span>]]></description>
		<pubDate>Fri, 04 Apr 2014 04:44:00 +0000</pubDate>
		<guid><![CDATA[http://www.narisa.com/forums/index.php?app=blog&blogid=9&showentry=3099]]></guid>
	</item>
	<item>
		<title><![CDATA[up1's Blog - SOLID Part 2 ::  �� Open-Close �Դ��ǹ��â��� �Դ������]]></title>
		<link><![CDATA[http://www.narisa.com/forums/index.php?app=blog&blogid=9&showentry=3098]]></link>
		<category></category>
		<description><![CDATA[<span style='font-size: 14px;'><span style='font-family: Arial'>�Ҷ֧�ǤԴ����ͧ� SOLID ��� ���&nbsp;&nbsp;O �������Ҩҡ Open-Closed Principle ���� OCP</span><br />
<span style='font-family: Arial'>������������� �Դ��ǹ��â��� �Դ������</span><br />
<span style='font-family: Arial'>�������� ??</span><br />
<br />
<span style='font-family: Arial'>��蹤�� ���ǹ��ҧ� �ͧ�к��ҹ�����Ҩ��� class, method, module</span><br />
<span style='font-family: Arial'>��鹤�÷���Դ��ǹ��͢����� ������Դ���ӡ�����</span><br />
<br />
<span style='font-family: Arial'>����ǹ������������Ѻ����͡Ẻ��� ����ա��������������ö�����������ǹ��</span><br />
<span style='font-family: Arial'>����÷������ code ������������ǹ� ¡��鹨���¹����������������¡��ҹ code ���������</span><br />
<span style='font-family: Arial'>�ѧ�������Ҩ�ФԴ������ǤԴ����š ��觶�Һ͡�������ͧ��÷��� deploy �к��������</span><br />
<span style='font-family: Arial'>�����������������ö����� ���� �������� Java, C# ��� C++ ����š !!!</span><br />
<br />
<span style='font-family: Arial'>����ͧ�ѧࡵ���� �о���� OCP ����������������������ѹ��Ѻ SRP ��ǤԴ�á�ͧ SOLID �ҡ</span><br />
<span style='font-family: Arial'>�������ǤԴ����㹷ҧ���ǡѹ ����Ǥ��</span><br />
<span style='font-family: Arial'>��� code���������ҧ���������ö����¹�ŧ�� 2 �˵ؼ� </span><br />
<span style='font-family: Arial'>�ѧ��鹶��������������ö�����������͡�ʷ�� code ��ǹ��鹨зӡ����䢶֧ 2 �˵ؼ�</span><br />
<span style='font-family: Arial'>�����ѹ�ТѴ��駡Ѻ�ǤԴ OCP������� OCP �������ͧ��������� code</span><br />
<br />
<span style='font-family: Arial'>�������Ҷ�������¹ code �����仵���ǤԴ SRP ���Ǩ���仵�� OCP ���͹Ф�Ѻ</span><br />
<span style='font-family: Arial'>��ҡ code ��ǹ�˭��辺��ҷ���ͧ�ǤԴ���ʹ���ͧ�ѹ</span><br />
<br />
<span style='font-family: Arial'><strong class='bbc'>�Ӷ��</strong></span><br />
<span style='font-family: Arial'>����������ҧ�÷��ĵԡ�����÷ӧҹ�ͧ�к�������¹��� �����ӡ����� code ?</span><br />
<span style='font-family: Arial'>����������ҧ�÷����Ҩ�����¹�ŧ��觷��������ӡ����� ?</span><br />
<br />
<span style='font-family: Arial'><strong class='bbc'>�ӵͺ</strong></span><br />
<span style='font-family: Arial'>Abstraction layer ����</span><br />
<br />
<span style='font-family: Arial'>�Ҵٵ�����ҧ�ѹ�ա��� ���ͤ������㨷��Ѵਹ</span><br />
<br />
<span style='font-family: Arial'>������ҧ��÷ӧҹ�����ҧ class Client �Ѻ Server </span><br />
<br />
<span style='font-family: Arial'>class Client {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;public void connect() {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Server server = new Server();</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server.connect();</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;}</span><br />
<span style='font-family: Arial'>}</span><br />
<br />
<span style='font-family: Arial'>class Server {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;public void connect() {}</span><br />
<span style='font-family: Arial'>}</span><br />
<br />
<span style='font-family: Arial'>�ѧࡵ��� class Client ���١�Դ�Ѻ class Server �����ҧ�ҡ</span><br />
<span style='font-family: Arial'>�ѧ��鹶����� class Server ���ǨС�з���� Client ���ҧ��͹</span><br />
<span style='font-family: Arial'>����㹷ҧ�ç���� �������������� Client ��������� ������ Server ��ͧ����蹡ѹ �蹡��������º�µ�ҧ� ����� �繵�</span><br />
<br />
<span style='font-family: Arial'><strong class='bbc'>�Ըա����� ����ö���͡������ Interface ��� Abstract class</strong></span><br />
<span style='font-family: Arial'>�����ִ�Ƿҧ�ͧ design pattern ���Ǩ����¡��� Strategy pattern ��� Template method pattern</span><br />
<br />
<span style='font-family: Arial'>������ҧ code ����� Interface</span><br />
<br />
<span style='font-family: Arial'>interface ClientInterface {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;void connect();</span><br />
<span style='font-family: Arial'>}</span><br />
<br />
<span style='font-family: Arial'>class Server implements ClientInterface {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp; public void connect() {}</span><br />
<span style='font-family: Arial'>} </span><br />
<br />
<span style='font-family: Arial'>class Client {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;public void connect() {</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ClientInterface server = new Server();</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server.connect();</span><br />
<span style='font-family: Arial'>&nbsp;&nbsp;&nbsp;&nbsp;}</span><br />
<span style='font-family: Arial'>} </span><br />
<br />
<span style='font-family: Arial'>�ҡ code ������ҧ��͡���¡ interface �͡��� client ���Ъ�Դ �������ӧҹ�Ѻ Server ��ҧ� �����</span><br />
<span style='font-family: Arial'>�ѧ��鹶����ҵ�ͧ���������Դ�ͧ client ���� server �������������������</span><br />
<span style='font-family: Arial'>Ŵ������� ��� ������ code ŧ������·���ش</span><br />
<br />
<span style='font-family: Arial'>���������ҧ client ��� server �ա�÷ӧҹ������Դ�����դ�������ѹ��ѹ�ҡ </span></span><br />
<span style='font-size: 14px;'><span style='font-family: Arial'>����ö�� Abstract class ���� Template method pattern ��觨����Ƿҧ���ա���&nbsp;&nbsp;</span></span><br />
<span style='font-size: 14px;'><span style='font-family: Arial'>�� ��º������ Policy �ͧ���� Client �繵�</span><br />
<br />
<span style='font-family: Arial'><strong class='bbc'>�����ػ</strong></span><br />
<span style='font-family: Arial'>��� code ��ǹ㴡�������ö�����㹤����á ���դ���������٧��Ҩж١����ա�������ҧ��͹</span><br />
<span style='font-family: Arial'>�ѧ��鹶������¹ code �ͧ��ǹ��������仵���ǤԴ OCP ���ǨЪ���Ŵ���� ��� �ç��� �����䢴��¹�</span></span>]]></description>
		<pubDate>Thu, 03 Apr 2014 17:05:06 +0000</pubDate>
		<guid><![CDATA[http://www.narisa.com/forums/index.php?app=blog&blogid=9&showentry=3098]]></guid>
	</item>
</channel>
</rss>