<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>U.Seung&#039;s Log</title>
		<link>http://9eye.net/</link>
		<description>하면 되고, 꿈꾸면 이루어 지고, 믿으면 현실이 되는 곳.. 그 곳은 혹시 내가 살고 있는 이 곳이 아닐까?</description>
		<language>ko</language>
		<pubDate>Thu, 04 Feb 2010 19:37:28 +0900</pubDate>
		<generator>Tistory 1.1 (http://www.tistory.com/)</generator>
		<image>
		<title>U.Seung&#039;s Log</title>
		<url><![CDATA[http://cfs2.tistory.com/upload_control/download.blog?fhandle=YmxvZzUyNzNAZnMyLnRpc3RvcnkuY29tOi9hdHRhY2gvMC83Mi5qcGc%3D]]></url>
		<link>http://9eye.net/</link>
		<description>하면 되고, 꿈꾸면 이루어 지고, 믿으면 현실이 되는 곳.. 그 곳은 혹시 내가 살고 있는 이 곳이 아닐까?</description>
		</image>
		<item>
			<title>빌드(컴파일, 링크) 속도가 느리다면....</title>
			<link>http://9eye.net/entry/Slow-Link-speed-Add-RAM</link>
			<description>&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
&amp;nbsp;&lt;b&gt;컴파일 속도&lt;/b&gt;가 느리다면.. &lt;a href=&quot;http://www.xoreax.com/slow_build_time_challenge.htm&quot; target=&quot;_blank&quot; title=&quot;[http://www.xoreax.com/slow_build_time_challenge.htm]로 이동합니다.&quot;&gt;IncrediBuild&lt;/a&gt;를 쓰세요.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile26.uf.tistory.com/original/161FBA024B6AA22678A4CE&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile26.uf.tistory.com/image/161FBA024B6AA22678A4CE&quot; alt=&quot;&quot; filemime=&quot;image/gif&quot; filename=&quot;BuildMonitor_Progress_Small.gif&quot; height=&quot;200&quot; width=&quot;500&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
&amp;nbsp;&lt;b&gt;링크 속도&lt;/b&gt;가 느리다면.&lt;/div&gt;
&amp;nbsp;일단 64비트 OS를 설치하고,&lt;div&gt;
&amp;nbsp;RAM을 넉넉하게 늘리세요. &amp;nbsp; ( 4G 이상, 6G 이상 추천 )&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile7.uf.tistory.com/original/186932124B6AA30B3D3D22&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile7.uf.tistory.com/image/186932124B6AA30B3D3D22&quot; alt=&quot;&quot; filemime=&quot;image/png&quot; filename=&quot;system.PNG&quot; height=&quot;291&quot; width=&quot;382&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;RAM 업그레이드 이후에 체감 링크 속도가 2~3배 빨라졌습니다.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;</description>
			<category>정보 공유터</category>
			<author>U_Seung</author>
			<guid>http://9eye.net/356</guid>
			<comments>http://9eye.net/entry/Slow-Link-speed-Add-RAM#entry356comment</comments>
			<pubDate>Thu, 04 Feb 2010 10:55:21 +0900</pubDate>
		</item>
		<item>
			<title>[MySQL] NULL이지만 NULL이 아닌 슬픈 이야기..</title>
			<link>http://9eye.net/entry/Mysql-Binary-Type-Null-Column-But-Not-Null</link>
			<description>&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;일단 어떤 테이블에 varbinary(123) 타입을 가진 컬럼이 하나 있었습니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(203, 203, 203); border-right-color: rgb(203, 203, 203); border-bottom-color: rgb(203, 203, 203); border-left-color: rgb(203, 203, 203); background-color: rgb(0, 0, 0); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;mysql&amp;gt; DESC SomeTable col1;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;+-------+----------------+------+-----+---------+-------+&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;| Field | Type &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | Null | Key | Default | Extra |&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;+-------+----------------+------+-----+---------+-------+&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;| col1 &amp;nbsp;| varbinary(123) | YES &amp;nbsp;| &amp;nbsp; &amp;nbsp; | NULL &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;+-------+----------------+------+-----+---------+-------+&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;1 row in set (0.00 sec)&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;이 컬럼에는 NULL이 들어 있었습니다.&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(203, 203, 203); border-right-color: rgb(203, 203, 203); border-bottom-color: rgb(203, 203, 203); border-left-color: rgb(203, 203, 203); background-color: rgb(0, 0, 0); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;mysql&amp;gt; SELECT col1 FROM SomTable LIMIT 0, 10 ;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;+------+&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;| col1 |&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;+------+&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;| NULL |&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;| NULL |&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;| NULL |&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;| NULL |&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;| NULL |&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;| NULL |&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;| NULL |&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;| NULL |&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;| NULL |&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;| NULL |&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;+------+&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;10 rows in set (0.00 sec)&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&amp;nbsp;Stored Procedure를 통해서 여러개의 테이블에서 여러개의 컬럼을 읽는 프로그램이었는데...&amp;nbsp;디버깅 끝에 이 부분부터 꼬이기 시작한다는 것을 발견했습니다.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;그리고 희한하게도 이 컬럼을 읽는 부분에서 NULL이 아닌 값을 읽고 있는 것을 발견했습니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;그리고... 확인결과 ... 진짜 NULL이 아님을 알았고&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(203, 203, 203); border-right-color: rgb(203, 203, 203); border-bottom-color: rgb(203, 203, 203); border-left-color: rgb(203, 203, 203); background-color: rgb(0, 0, 0); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;mysql&amp;gt; SELECT col1 FROM SomeTable WHERE col1 IS NULL LIMIT 0, 10 ;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;Empty set (0.00 sec)&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&amp;nbsp;비극의 진실은...&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(203, 203, 203); border-right-color: rgb(203, 203, 203); border-bottom-color: rgb(203, 203, 203); border-left-color: rgb(203, 203, 203); background-color: rgb(0, 0, 0); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;mysql&amp;gt; SELECT col1 FROM SomeTable WHERE col1 = &quot;NULL&quot; LIMIT 0, 10 ;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;+------+&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;| col1 |&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;+------+&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;| NULL |&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;| NULL |&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;| NULL |&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;| NULL |&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;| NULL |&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;| NULL |&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;| NULL |&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;| NULL |&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;| NULL |&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;| NULL |&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;+------+&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;&lt;span style=&quot;font-family: &#039;Courier New&#039;; &quot;&gt;10 rows in set (0.00 sec)&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
.......... oTL&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;한 가지 고려해볼 수 있는 사항은&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;Binary 컬럼은 SELECT시에 *(asterisk)를 쓰지 않고,&amp;nbsp;HEX(col1) 처럼 HEX() 함수로 감싸도록 (마음속으로.. ) 강제 하는 방법.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
			<category>정보 공유터</category>
			<author>U_Seung</author>
			<guid>http://9eye.net/355</guid>
			<comments>http://9eye.net/entry/Mysql-Binary-Type-Null-Column-But-Not-Null#entry355comment</comments>
			<pubDate>Fri, 22 Jan 2010 19:27:13 +0900</pubDate>
		</item>
		<item>
			<title>[Linux] 콜스택이 깨진 Core 파일 디버깅 하기</title>
			<link>http://9eye.net/entry/Debug-Broken-CallStack-using-GDB</link>
			<description>&lt;br /&gt;
&amp;nbsp;Linux에서 Daemon을 돌리다 보면 버그로 인해서 프로그램이 Crash 되는 일이 종종 있습니다.&lt;br /&gt;
&amp;nbsp;당연히 문제가 되는 부분 찾아서 고쳐야 합니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;그럴때 대부분 사용하는 방법이 Process가 죽기전에 기록을 &lt;A title=&quot;[http://linux.die.net/man/5/core]로 이동합니다.&quot; href=&quot;http://linux.die.net/man/5/core&quot; target=_blank&gt;Core파일&lt;/A&gt;에 남기도록 설정&amp;nbsp;하는 방법 입니다.&lt;br /&gt;
&amp;nbsp;정상적으로 남겨진 Core파일 경우라면 디버깅 하는게 큰 문제는 없을 테지만&lt;br /&gt;
&amp;nbsp;아래와 같이 콜스택이 깨져 보이는 난감한 상황을 만들어 내기도 합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;DIV style=&quot;BORDER-BOTTOM: #cbcbcb 1px solid; BORDER-LEFT: #cbcbcb 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #000000; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #cbcbcb 1px solid; BORDER-RIGHT: #cbcbcb 1px solid; PADDING-TOP: 10px&quot; class=txc-textbox&gt;&lt;SPAN style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium &#039;Times New Roman&#039;; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px&quot; class=Apple-style-span&gt;&lt;SPAN style=&quot;BORDER-COLLAPSE: collapse; FONT-FAMILY: arial, sans-serif; FONT-SIZE: 13px&quot; class=Apple-style-span&gt;
&lt;P style=&quot;MARGIN: 0px 0px 0px 10pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;Loaded symbols for /lib/tls/librt.so.1&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0px 0px 0px 10pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;Reading symbols from /usr/lib/libggauth2.so.56...&lt;WBR&gt;done.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0px 0px 0px 10pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;Loaded symbols for /usr/lib/libggauth2.so.56&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0px 0px 0px 10pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;#0&amp;nbsp; 0x02d10100 in ?? ()&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0px 0px 0px 10pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;(gdb)&lt;SPAN class=Apple-converted-space&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: white&quot; lang=EN-US&gt;bt&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0px 0px 0px 10pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;#0&amp;nbsp; 0x02d10100 in ?? ()&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0px 0px 0px 10pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;#1&amp;nbsp; 0x01010000 in ?? ()&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0px 0px 0px 10pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;#2&amp;nbsp; 0x000002d2 in ?? ()&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;콜스택이 깨져 보이는 경우는 주로 &lt;A title=&quot;[http://en.wikipedia.org/wiki/Stack_buffer_overflow]로 이동합니다.&quot; href=&quot;http://en.wikipedia.org/wiki/Stack_buffer_overflow&quot; target=_blank&gt;Stack Buffer Overrun&lt;/A&gt; 으로 인한 문제 입니다. &lt;br /&gt;
&amp;nbsp;(다른 문제는 이 글에서 다루지&amp;nbsp;않습니다.)&lt;br /&gt;
&amp;nbsp;이 경우, 스택에 있던 Return Address가 지워져 있기 때문에 GDB는 콜스택을&amp;nbsp;표시하지 못합니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;하지만 이런 경우라고&amp;nbsp;해서 너무 낙심할 것은 아닙니다.&lt;br /&gt;
&amp;nbsp;Stack Buffer가 조금 넘친 경우에는 남은 정보를 이용해서 문제를 해결 할 수 있기 때문입니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;이때, 실마리를 제공해주는 것은&amp;nbsp;Register의 &lt;A title=&quot;[http://en.wikipedia.org/wiki/X86#Purpose]로 이동합니다.&quot; href=&quot;http://en.wikipedia.org/wiki/X86#Purpose&quot; target=_blank&gt;ESP&lt;/A&gt; 입니다.&lt;br /&gt;
&amp;nbsp;비록 원하던 Return Adress는 지워졌지만 ESP는&amp;nbsp;값은 정상적인 값을 유지하고 있습니다.&lt;br /&gt;
&amp;nbsp;이제 ESP가 가르키던 메모리 주변을 뒤져서 Return Address와 유사한 값들이 있는지 찾아보면 문제에 대한 힌트를 얻을 수 있습니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;일단 Return Address랑 유사한 녀석들은 어떤 녀석이어야 하는지 파악 해야&amp;nbsp;합니다.&lt;br /&gt;
&amp;nbsp;당연히 Return Address는 실행가능한 Instruction 들이 저장되어 있는 &lt;A title=&quot;[http://en.wikipedia.org/wiki/Code_segment]로 이동합니다.&quot; href=&quot;http://en.wikipedia.org/wiki/Code_segment&quot; target=_blank&gt;Code Segment&lt;/A&gt;를 가르키고&amp;nbsp;있습니다.&amp;nbsp;GDB에서는 &lt;STRONG&gt;maint info sections .text&lt;/STRONG&gt; 명령어를 통해서 Code Segment를 찾아 볼 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;DIV style=&quot;BORDER-BOTTOM: #cbcbcb 1px solid; BORDER-LEFT: #cbcbcb 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #000000; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #cbcbcb 1px solid; BORDER-RIGHT: #cbcbcb 1px solid; PADDING-TOP: 10px&quot; class=txc-textbox&gt;&lt;SPAN style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium &#039;Times New Roman&#039;; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px&quot; class=Apple-style-span&gt;&lt;SPAN style=&quot;BORDER-COLLAPSE: collapse; FONT-FAMILY: arial, sans-serif; FONT-SIZE: 13px&quot; class=Apple-style-span&gt;
&lt;P style=&quot;MARGIN: 0px 0px 0px 10pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;(gdb)&lt;SPAN class=Apple-converted-space&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: white&quot; lang=EN-US&gt;maint info sections .text&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0px 0px 0px 10pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;Exec file:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0px 0px 0px 10pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; `/home/aa/bb.debug.&lt;WBR&gt;1f25cf3be302bd7308d598c132ac90&lt;WBR&gt;4b&#039;, file type elf32-i386.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0px 0px 0px 10pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=Apple-converted-space&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(141,179,226)&quot; lang=EN-US&gt;0x08051e20&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(141,179,226)&quot; lang=EN-US&gt;0x0824fc08&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;&lt;SPAN class=Apple-converted-space&gt;&amp;nbsp;&lt;/SPAN&gt;at 0x00009e20: .text ALLOC LOAD READONLY CODE HAS_CONTENTS&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0px 0px 0px 10pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;Core file:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0px 0px 0px 10pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; `/home/aa/core.&lt;WBR&gt;1214458224.bb.30678&#039;, file type elf32-i386.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR style=&quot;MARGIN-LEFT: 4em&quot; class=Apple-interchange-newline&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;이제 Code Segment의 범위도 구했으니 ESP를 기준으로 주변 탐색해서&amp;nbsp;Return Address와 유사한 녀석들을 찾아&amp;nbsp;본다면 아마 콜스택과&amp;nbsp;유사한 모양이&amp;nbsp;만들어 질 수 있을 겁니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;이를 위해서 간단한 &lt;A title=&quot;[http://sourceware.org/gdb/current/onlinedocs/gdb/Define.html#Define]로 이동합니다.&quot; href=&quot;http://sourceware.org/gdb/current/onlinedocs/gdb/Define.html#Define&quot; target=_blank&gt;User-defined Command&lt;/A&gt;를 만들었습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;DIV style=&quot;BORDER-BOTTOM: #cbcbcb 1px dashed; BORDER-LEFT: #cbcbcb 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #ffffff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #cbcbcb 1px dashed; BORDER-RIGHT: #cbcbcb 1px dashed; PADDING-TOP: 10px&quot; class=txc-textbox&gt;define findsymbols&lt;br /&gt;
set $textbegin = $arg0&lt;br /&gt;
set $textend = $arg1&lt;br /&gt;
set $si = $arg2&lt;br /&gt;
set $ei = $arg3&lt;br /&gt;
while $si &amp;lt; $ei&lt;br /&gt;
set $value = *(int*)$si&lt;br /&gt;
if ($textbegin &amp;lt;= $value &amp;amp;&amp;amp; $value &amp;lt;= $textend)&lt;br /&gt;
printf &quot;[0x%08x] &quot;, $si&lt;br /&gt;
info symbol $value&lt;br /&gt;
end&lt;br /&gt;
set $si = $si + sizeof(void*)&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&lt;/DIV&gt;&lt;br /&gt;
&amp;nbsp;가독성이 다소 떨어지긴&amp;nbsp;하지만 동작은 간단합니다.&lt;br /&gt;
&amp;nbsp;주어진 범위를 탐색하면서 정해진 범위의 값(Code Segment의 범위)이 들어오면..&lt;br /&gt;
&amp;nbsp;해당 값을 &lt;STRONG&gt;info symbol&lt;/STRONG&gt; 을 이용해서 출력하는&amp;nbsp;Command 입니다.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;실제로 사용하면 아래와 같은 결과를 얻을 수 있습니다. (함수 이름은&amp;nbsp;가명..)&lt;br /&gt;
&lt;br /&gt;
&lt;DIV style=&quot;BORDER-BOTTOM: #cbcbcb 1px solid; BORDER-LEFT: #cbcbcb 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #000000; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #cbcbcb 1px solid; BORDER-RIGHT: #cbcbcb 1px solid; PADDING-TOP: 10px&quot; class=txc-textbox&gt;&lt;SPAN style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium &#039;Times New Roman&#039;; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px&quot; class=Apple-style-span&gt;&lt;SPAN style=&quot;BORDER-COLLAPSE: collapse; FONT-FAMILY: arial, sans-serif; FONT-SIZE: 13px&quot; class=Apple-style-span&gt;
&lt;P style=&quot;MARGIN: 0px 0px 0px 10pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;(gdb)&lt;SPAN class=Apple-converted-space&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: white&quot; lang=EN-US&gt;findsymbols&lt;SPAN class=Apple-converted-space&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(141,179,226)&quot; lang=EN-US&gt;0x08051e20&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: white&quot; lang=EN-US&gt;&lt;SPAN class=Apple-converted-space&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(141,179,226)&quot; lang=EN-US&gt;0x0824fc08&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: white&quot; lang=EN-US&gt;&lt;SPAN class=Apple-converted-space&gt;&amp;nbsp;&lt;/SPAN&gt;$esp-1024 $esp+1024&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0px 0px 0px 10pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;[..]&amp;nbsp;IoHandler::SendPacket(char const*, unsigned int, bool) + 786 in section .text&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0px 0px 0px 10pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;[..]&amp;nbsp;IoHandler::UniCast(char const*, unsigned int) + 26 in section .text&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0px 0px 0px 10pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;[..]&lt;/SPAN&gt;&amp;nbsp;Remote::PartyCast(Party*, char const*, unsigned int) + 141 in section .text&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0px 0px 0px 10pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;[..]&lt;/SPAN&gt; Dispatcher::Do(&lt;WBR&gt;Task*, TaskMsg*) + 795 in section .text&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0px 0px 0px 10pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;[..]&lt;/SPAN&gt;&amp;nbsp;Task::&lt;WBR&gt;ExtractTaskMsg(&lt;WBR&gt;TaskMsg*) + 953 in section .text&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0px 0px 0px 10pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: rgb(191,191,191)&quot; lang=EN-US&gt;[..] &lt;/SPAN&gt;Task::svc() + 510 in section .text&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;br /&gt;
&lt;br /&gt;콜스택(?)을 얻었으니 ESP값과 비교 등을&amp;nbsp;통해서 어느 지점에서&amp;nbsp;Crash되었는 지를 파악할 수 있을 것입니다. 아마 있어야 하는 함수 1~2개가 누락되어서 보이는 경우가 대부분 일테고요.&amp;nbsp;어떤 함수가 버퍼를 넘치게 했는지 찾아내면 됩니다.&lt;br /&gt;
&lt;br /&gt;좀 더 정확한 원인을 얻어 보기 위해서는 GDB의 &lt;STRONG&gt;x&lt;/STRONG&gt; 명령어 등을&amp;nbsp;이용해서 ESP 주변 메모리를 잘 뒤져보면 답을 찾을 수 있습니다. 하지만 이 정도 까지 얻었다면 소스를 보고 문제의 원인을 먼저 찾고 문제점이 맞는지 검증하는 편이 더 빠를 수 있습니다.&lt;br /&gt;
&lt;br /&gt;그럼 즐거운 디버깅 되세요 :)&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;</description>
			<category>정보 공유터</category>
			<category>core</category>
			<category>corefile</category>
			<category>debugging</category>
			<category>GDB</category>
			<category>Linux</category>
			<author>U_Seung</author>
			<guid>http://9eye.net/353</guid>
			<comments>http://9eye.net/entry/Debug-Broken-CallStack-using-GDB#entry353comment</comments>
			<pubDate>Mon, 18 Jan 2010 22:56:48 +0900</pubDate>
		</item>
		<item>
			<title>내 책상 (2010)</title>
			<link>http://9eye.net/entry/My-Desk-In-The-Office-2010</link>
			<description>&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile23.uf.tistory.com/original/12364D244B4D47B74BB0A0&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile23.uf.tistory.com/image/12364D244B4D47B74BB0A0&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;myOfficeDesk.jpg&quot; height=&quot;473&quot; width=&quot;630&quot;/&gt;&lt;/a&gt;&lt;/div&gt;(사진 찍은 날짜는 사진 우측 위에 표시.)&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;아시는 분은 아시겠지만&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;저는 온라인 게임 서버를 만들고 있습니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
#.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;모니터는 세 대를 사용합니다.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;본체는 두 대를 이용하며,&amp;nbsp;두 컴퓨터는 Input Director로 연결해서 사용합니다.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;(지금은 내부 사정으로 서브컴퓨터를 사용하지 못하고 있습니다만,&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;서브 컴퓨터의 용도는 주로 웹서핑이나 모니터링 툴을 사용하는 목적으로 썼습니다. )&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
#.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;키보드는 원래 기계식을 쓰다가 너무 시끄러운것 같아서 i-rocks를 씁니다.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;근데 요즘 가끔씩 손목이 아파서(원인은 잘 모르겠지만..)&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;Microsoft의 Natural Keyboard로 바꿀까 말까 고민하고 있습니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
#.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;키보드 아래에는 Post-It을 붙이는 장소입니다.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;할일이 생기면 Post-It을 붙이고, 그 위에 적어 둡니다.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;할일을 다 하면 두줄로 긋고, Post-It에 적힌 리스트가 모두 두줄로 그으면 Post-It을 버립니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
#.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;주로 쓰는 프로그램은 Microsoft Visual Studio 2008 입니다.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;Linux에서 돌아가야하는 Application을 만들지만 Linux에서 개발/디버깅은 불가피한 경우가 아니면 하지 않습니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;Visual Studio을 쓸때는 양쪽 화면에 꽉차게 창 크기를 늘려서 씁니다.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;이렇게 쓰면 창 두개를 한 화면에 볼 수 있어서 편리합니다.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;(사진에서는 파일 하나만 열었네요.)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;색상은 검은 바탕을 선호하며, 폰트는 Bit Stream Vera Sans Mono를 씁니다.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
			<category>잡담 놀이터</category>
			<author>U_Seung</author>
			<guid>http://9eye.net/352</guid>
			<comments>http://9eye.net/entry/My-Desk-In-The-Office-2010#entry352comment</comments>
			<pubDate>Wed, 13 Jan 2010 15:57:08 +0900</pubDate>
		</item>
		<item>
			<title>위대한 발견: Visual Studio 검색창 늘리기</title>
			<link>http://9eye.net/entry/%EC%9C%84%EB%8C%80%ED%95%9C-%EB%B0%9C%EA%B2%AC-Visual-Studio-%EA%B2%80%EC%83%89%EC%B0%BD-%EB%8A%98%EB%A6%AC%EA%B8%B0</link>
			<description>&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile3.uf.tistory.com/original/1156F10C4B30A2305730FC&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile3.uf.tistory.com/image/1156F10C4B30A2305730FC&quot; alt=&quot;&quot; filemime=&quot;image/png&quot; filename=&quot;ureka.PNG&quot; height=&quot;165&quot; width=&quot;481&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;div&gt;&lt;div&gt;
&amp;nbsp;그림의 오른쪽 아래 동그라미 쳐진 곳을 주목하면 된다.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;저 상자가 늘어난다는 것..&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
&amp;nbsp;매일 쓰던 툴에서 발견한 신선함 이랄까;;;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;</description>
			<category>정보 공유터</category>
			<category>Visual Studio</category>
			<author>U_Seung</author>
			<guid>http://9eye.net/351</guid>
			<comments>http://9eye.net/entry/%EC%9C%84%EB%8C%80%ED%95%9C-%EB%B0%9C%EA%B2%AC-Visual-Studio-%EA%B2%80%EC%83%89%EC%B0%BD-%EB%8A%98%EB%A6%AC%EA%B8%B0#entry351comment</comments>
			<pubDate>Tue, 22 Dec 2009 19:44:46 +0900</pubDate>
		</item>
		<item>
			<title>Vim으로 여러 파일 Tab으로 열기</title>
			<link>http://9eye.net/entry/Open-Many-files-in-single-vim-using-tabs</link>
			<description>&lt;br /&gt;
&amp;nbsp;일단 회사에 보면 대부분이 U모 Editor를 사용하고 있다.&lt;br /&gt;
&amp;nbsp;훌륭한 프로그램이라고 생각하지만 그냥 안 쓰다보니 설치도 안했다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;나는 주로 Windows에서도 Vim을 쓰는데..&lt;br /&gt;
&amp;nbsp;다른 사람들에 비해서 여러개의 파일을 다루는 것이 불편하다는 것을 알게 되었다.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile10.uf.tistory.com/original/167258164AEC1C629DB10C&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile10.uf.tistory.com/image/167258164AEC1C629DB10C&quot; alt=&quot;&quot; filemime=&quot;image/png&quot; filename=&quot;gg.PNG&quot; height=&quot;425&quot; width=&quot;460&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;그래서 위와 같이 Vim의 Tabs 기능으로 자주 쓰는 파일을 열어야 생각이 들었다.&lt;br /&gt;
&amp;nbsp;일단 생각하고나니 문제가 간단해졌다.&lt;br /&gt;
&lt;br /&gt;
&lt;DIV style=&quot;BORDER-BOTTOM: #c1c1c1 1px solid; BORDER-LEFT: #c1c1c1 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #c1c1c1 1px solid; BORDER-RIGHT: #c1c1c1 1px solid; PADDING-TOP: 10px&quot; class=txc-textbox&gt;CD F:\TT\&lt;br /&gt;
gvim -p *.xml&lt;br /&gt;
&lt;/DIV&gt;&lt;br /&gt;
&amp;nbsp;자주 쓰는 파일 목록을 따로 저장해서 열어주는 방식도 있겠지만..&lt;br /&gt;
&amp;nbsp;난 이 정도로 충분했다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;두 개의 바로가기를 만들었는데&lt;br /&gt;
&amp;nbsp;하나는 *.xml을 읽어 주고, 하는 *.ini를 읽어 준다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;이제는&amp;nbsp;다른 사람보다 편해졌다. :)&lt;br /&gt;
&lt;br /&gt;</description>
			<category>정보 공유터</category>
			<category>batch</category>
			<category>Command Line</category>
			<category>script</category>
			<category>win32</category>
			<author>U_Seung</author>
			<guid>http://9eye.net/350</guid>
			<comments>http://9eye.net/entry/Open-Many-files-in-single-vim-using-tabs#entry350comment</comments>
			<pubDate>Sat, 31 Oct 2009 20:50:06 +0900</pubDate>
		</item>
		<item>
			<title>슬픈이야기...</title>
			<link>http://9eye.net/entry/The-Sad-Story</link>
			<description>&lt;span class=&quot;apple-style-span&quot;&gt;&lt;span style=&quot;COLOR: black; FONT-SIZE: 9pt&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;
&lt;div style=&quot;BORDER-BOTTOM: #cbcbcb 1px solid; BORDER-LEFT: #cbcbcb 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #000000; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #cbcbcb 1px solid; BORDER-RIGHT: #cbcbcb 1px solid; PADDING-TOP: 10px&quot; class=&quot;txc-textbox&quot;&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;apple-style-span&quot;&gt;&lt;span style=&quot;COLOR: black; FONT-SIZE: 9pt&quot; lang=&quot;EN-US&quot;&gt;&lt;font color=&quot;#ffffff&quot; face=&quot;맑은 고딕&quot;&gt;[root@localhost&amp;nbsp;root]#&amp;nbsp;gcc&amp;nbsp;homework1.c&amp;nbsp;-o&amp;nbsp;homework1.c&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;COLOR: black; FONT-SIZE: 9pt&quot; lang=&quot;EN-US&quot;&gt;&lt;br /&gt;
&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;font color=&quot;#ffffff&quot;&gt;&lt;span class=&quot;apple-style-span&quot;&gt;[root@localhost&amp;nbsp;root]#&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;apple-style-span&quot;&gt;[root@localhost&amp;nbsp;root]#&amp;nbsp;ls&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;apple-style-span&quot;&gt;homework1.c&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;apple-style-span&quot;&gt;[root@localhost&amp;nbsp;root]#&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(255, 255, 255); &quot;&gt;[root@localhost&amp;nbsp;root]#&amp;nbsp;&lt;/span&gt;&lt;div&gt;
&lt;span style=&quot;COLOR: black; FONT-SIZE: 9pt&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;font color=&quot;#ffffff&quot;&gt;&lt;span class=&quot;apple-style-span&quot;&gt;[root@localhost&amp;nbsp;root]#&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/font&gt;&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;보기만 해도 가슴이 미어지는 정말 가슴 아픈 이야기.......&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;내가 쓰는 방법은..&lt;br /&gt;
&amp;nbsp;Vim으로 파일을 열고, Ctrl-Z 로 suspend 시켜서 컴파일 하는 방법..&lt;br /&gt;
&amp;nbsp;그리고, 작업이 완전히 끝나기 전까지는 Vim을 닫지 않는다.&lt;br /&gt;
&amp;nbsp;이렇게 하면 소스 파일이 다른 요인에 의해서 날라가더라도 Vim 프로세스 메모리에 저장되서 안전하다.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;두번째 주의할 사항은.&lt;br /&gt;
&amp;nbsp;저런 무자비한.. 자비없는 명령을 한번 실행했다면.;&lt;br /&gt;
&amp;nbsp;Bash Command History를 날리고, Bash를 재시작 하는 것..&lt;br /&gt;
&amp;nbsp;더욱 더 끔찍한 일은.. 저런일이 반복 되는 것이기 때문에...&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&lt;/div&gt;
&lt;/span&gt;&lt;/span&gt;</description>
			<category>잡담 놀이터</category>
			<author>U_Seung</author>
			<guid>http://9eye.net/349</guid>
			<comments>http://9eye.net/entry/The-Sad-Story#entry349comment</comments>
			<pubDate>Fri, 12 Jun 2009 09:28:38 +0900</pubDate>
		</item>
		<item>
			<title>F#, Project Euler - Problem #4 (2)</title>
			<link>http://9eye.net/entry/FSharp-Project-Euler-Problem-4-2</link>
			<description>&lt;div&gt;
&lt;/div&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(193, 193, 193); border-right-color: rgb(193, 193, 193); border-bottom-color: rgb(193, 193, 193); border-left-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;div&gt;
참조: &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Gulim; font-weight: bold; line-height: normal; white-space: pre; &quot;&gt;&lt;a href=&quot;http://9eye.net/343&quot; target=&quot;_blank&quot; title=&quot;[http://9eye.net/343]로 이동합니다.&quot;&gt;F#, Project Euler - Problem #4&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
 Project Euler를 F#으로 푸는 작업은 계속 틈나는 대로 하고 있는데..&lt;/div&gt;
&lt;div&gt;
 안그래도 구독자가 별로 없는 블로그에 계속 그것만 올리면..&lt;/div&gt;
&lt;div&gt;
 구독자들에게 짜증을 줄까봐 자제하고 있습니다.ㅋ&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
 아무튼 Neon군이 리플로 제안한 방식으로 구현해보았습니다.&lt;/div&gt;
&lt;div&gt;
 일단 기존 방식은 무식하게 세자리 숫자의 곱을 모두 계산 하는 방식이었는데&lt;/div&gt;
&lt;div&gt;
 새로운 방식은 세자리 숫자의 곱 중에서 큰 수 순서대로 숫자를 뽑습니다.&lt;/div&gt;
&lt;div&gt;
 그리고, (123 * 312) 과 (312 * 123)은 같은 값이기 때문에 한번만 계산 합니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Bitstream Vera Sans Mono;}}{\colortbl;??\red238\green232\blue170;\red23\green23\blue23;\red224\green224\blue224;\red96\green255\blue96;\red64\green196\blue255;}??\fs20 \cf1\cb2\highlight2 set\cf3  [ (\cf4 999\cf3 *\cf4 999\cf3 , \cf4 999\cf3 , \cf4 999\cf3 ) ]\par ??    |&amp;gt; \cf1 Seq\cf3 .\cf1 unfold\cf3  (\cf5 fun\cf3  \cf1 pq\cf3  \cf5 -&amp;gt;\cf3  \par ??        \cf5 let\cf3  \cf1 head\cf3  = \cf1 pq\cf3 .\cf1 MaximumElement\par ??\cf3         \cf5 let\cf3  \cf1 product\cf3 , \cf1 a\cf3 , \cf1 b\cf3  = \cf1 head\par ??\cf3         \cf5 let\cf3  \cf1 newElements\cf3  = \par ??            \cf1 set\cf3  [ ((\cf1 a\cf3 -\cf4 1\cf3 )*\cf1 b\cf3 , \cf1 a\cf3 -\cf4 1\cf3 , \cf1 b\cf3 ); (\cf1 a\cf3 *(\cf1 b\cf3 -\cf4 1\cf3 ), \cf1 a\cf3 , \cf1 b\cf3 -\cf4 1\cf3 ) ] \par ??                |&amp;gt; \cf1 Set\cf3 .\cf1 filter\cf3  (\cf5 fun\cf3  (_, \cf1 a\cf3 , \cf1 b\cf3 ) \cf5 -&amp;gt;\cf3  \cf1 a\cf3  &amp;lt;= \cf1 b\cf3 )\par ??        \cf1 Some\cf3  (\cf1 product\cf3 , ((\cf1 pq\cf3 .\cf1 Remove\cf3  \cf1 head\cf3 ) + \cf1 newElements\cf3 )))\par ??    |&amp;gt; \cf1 Seq\cf3 .\cf1 filter\cf3  \cf1 is_parlindrome\par ??\cf3     |&amp;gt; \cf1 Seq\cf3 .\cf1 hd\par ??\cf3     |&amp;gt; \cf1 printfn\cf3  \cf4 &quot;Problem #4 = %d&quot;}
--&gt;
&lt;div style=&quot;font-family: Bitstream Vera Sans Mono; font-size: 10pt; color: #e0e0e0; background: #171717;&quot;&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;color: #eee8aa;&quot;&gt;set&lt;/span&gt; [ (&lt;span style=&quot;color: #60ff60;&quot;&gt;999&lt;/span&gt;*&lt;span style=&quot;color: #60ff60;&quot;&gt;999&lt;/span&gt;, &lt;span style=&quot;color: #60ff60;&quot;&gt;999&lt;/span&gt;, &lt;span style=&quot;color: #60ff60;&quot;&gt;999&lt;/span&gt;) ]&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;    |&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;Seq&lt;/span&gt;.&lt;span style=&quot;color: #eee8aa;&quot;&gt;unfold&lt;/span&gt; (&lt;span style=&quot;color: #40c4ff;&quot;&gt;fun&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;pq&lt;/span&gt; &lt;span style=&quot;color: #40c4ff;&quot;&gt;-&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;        &lt;span style=&quot;color: #40c4ff;&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;head&lt;/span&gt; = &lt;span style=&quot;color: #eee8aa;&quot;&gt;pq&lt;/span&gt;.&lt;span style=&quot;color: #eee8aa;&quot;&gt;MaximumElement&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;        &lt;span style=&quot;color: #40c4ff;&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;product&lt;/span&gt;, &lt;span style=&quot;color: #eee8aa;&quot;&gt;a&lt;/span&gt;, &lt;span style=&quot;color: #eee8aa;&quot;&gt;b&lt;/span&gt; = &lt;span style=&quot;color: #eee8aa;&quot;&gt;head&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;        &lt;span style=&quot;color: #40c4ff;&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;newElements&lt;/span&gt; = &lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;            &lt;span style=&quot;color: #eee8aa;&quot;&gt;set&lt;/span&gt; [ ((&lt;span style=&quot;color: #eee8aa;&quot;&gt;a&lt;/span&gt;-&lt;span style=&quot;color: #60ff60;&quot;&gt;1&lt;/span&gt;)*&lt;span style=&quot;color: #eee8aa;&quot;&gt;b&lt;/span&gt;, &lt;span style=&quot;color: #eee8aa;&quot;&gt;a&lt;/span&gt;-&lt;span style=&quot;color: #60ff60;&quot;&gt;1&lt;/span&gt;, &lt;span style=&quot;color: #eee8aa;&quot;&gt;b&lt;/span&gt;); (&lt;span style=&quot;color: #eee8aa;&quot;&gt;a&lt;/span&gt;*(&lt;span style=&quot;color: #eee8aa;&quot;&gt;b&lt;/span&gt;-&lt;span style=&quot;color: #60ff60;&quot;&gt;1&lt;/span&gt;), &lt;span style=&quot;color: #eee8aa;&quot;&gt;a&lt;/span&gt;, &lt;span style=&quot;color: #eee8aa;&quot;&gt;b&lt;/span&gt;-&lt;span style=&quot;color: #60ff60;&quot;&gt;1&lt;/span&gt;) ] &lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;                |&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;Set&lt;/span&gt;.&lt;span style=&quot;color: #eee8aa;&quot;&gt;filter&lt;/span&gt; (&lt;span style=&quot;color: #40c4ff;&quot;&gt;fun&lt;/span&gt; (_, &lt;span style=&quot;color: #eee8aa;&quot;&gt;a&lt;/span&gt;, &lt;span style=&quot;color: #eee8aa;&quot;&gt;b&lt;/span&gt;) &lt;span style=&quot;color: #40c4ff;&quot;&gt;-&gt;&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;a&lt;/span&gt; &amp;lt;= &lt;span style=&quot;color: #eee8aa;&quot;&gt;b&lt;/span&gt;)&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;        &lt;span style=&quot;color: #eee8aa;&quot;&gt;Some&lt;/span&gt; (&lt;span style=&quot;color: #eee8aa;&quot;&gt;product&lt;/span&gt;, ((&lt;span style=&quot;color: #eee8aa;&quot;&gt;pq&lt;/span&gt;.&lt;span style=&quot;color: #eee8aa;&quot;&gt;Remove&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;head&lt;/span&gt;) + &lt;span style=&quot;color: #eee8aa;&quot;&gt;newElements&lt;/span&gt;)))&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;    |&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;Seq&lt;/span&gt;.&lt;span style=&quot;color: #eee8aa;&quot;&gt;filter&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;is_parlindrome&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;    |&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;Seq&lt;/span&gt;.&lt;span style=&quot;color: #eee8aa;&quot;&gt;hd&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;    |&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;printfn&lt;/span&gt; &lt;span style=&quot;color: #60ff60;&quot;&gt;&quot;Problem #4 = %d&quot;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
Priority Queue 구현에서 일반적으로 사용되는 Heap를 사용하는 것이 가장 좋아 보이지만...&lt;/div&gt;
&lt;div&gt;
F#에서 쓰기 쉬운 Set (Binary Tree) 기반으로 구현 하였습니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;</description>
			<category>내 생산물</category>
			<category>F#</category>
			<category>FSharp</category>
			<category>Problem4</category>
			<category>project euler</category>
			<author>U_Seung</author>
			<guid>http://9eye.net/348</guid>
			<comments>http://9eye.net/entry/FSharp-Project-Euler-Problem-4-2#entry348comment</comments>
			<pubDate>Fri, 22 May 2009 11:03:34 +0900</pubDate>
		</item>
		<item>
			<title>F#, Project Euler - Problem #12</title>
			<link>http://9eye.net/entry/F-Project-Euler-Problem-12</link>
			<description>&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(203, 203, 203); border-right-color: rgb(203, 203, 203); border-bottom-color: rgb(203, 203, 203); border-left-color: rgb(203, 203, 203); background-color: rgb(255, 255, 255); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;div&gt;
Problem #12. What is the value of the first triangle number to have over five hundred divisors?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
번역: 500개가 넘는 (양의) 약수를 가진 첫번째 triangle number는 ?&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
먼저 triangle number의 수열은 아래와 같이 구할 수 있다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;Version1. 정의에 가까운 가장 직관적인 방식..&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Bitstream Vera Sans Mono;}}{\colortbl;??\red64\green196\blue255;\red23\green23\blue23;\red224\green224\blue224;\red238\green232\blue170;}??\fs20 \cf1\cb2\highlight2 let\cf3  \cf4 triangle_numbers\cf3  = \par ??    \cf1 let\cf3  \cf1 rec\cf3  \cf4 triangle_number\cf3  =\par ??        \cf1 function\cf3  \cf4 0\cf3  \cf1 -&amp;gt;\cf3  \cf4 1\cf3  | \cf4 n\cf3  \cf1 -&amp;gt;\cf3  (\cf4 n\cf3  + \cf4 1\cf3  + \cf4 triangle_number\cf3  (\cf4 n\cf3 -\cf4 1\cf3 ))\par ??    \cf4 Seq\cf3 .\cf4 init_infinite\cf3  \cf4 triangle_number\cf3  \par ??}
--&gt;
&lt;div style=&quot;font-family: Bitstream Vera Sans Mono; font-size: 10pt; color: #e0e0e0; background: #171717;&quot;&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;color: #40c4ff;&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;triangle_numbers&lt;/span&gt; = &lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;    &lt;span style=&quot;color: #40c4ff;&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color: #40c4ff;&quot;&gt;rec&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;triangle_number&lt;/span&gt; =&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;        &lt;span style=&quot;color: #40c4ff;&quot;&gt;function&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #40c4ff;&quot;&gt;-&gt;&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;1&lt;/span&gt; | &lt;span style=&quot;color: #eee8aa;&quot;&gt;n&lt;/span&gt; &lt;span style=&quot;color: #40c4ff;&quot;&gt;-&gt;&lt;/span&gt; (&lt;span style=&quot;color: #eee8aa;&quot;&gt;n&lt;/span&gt; + &lt;span style=&quot;color: #eee8aa;&quot;&gt;1&lt;/span&gt; + &lt;span style=&quot;color: #eee8aa;&quot;&gt;triangle_number&lt;/span&gt; (&lt;span style=&quot;color: #eee8aa;&quot;&gt;n&lt;/span&gt;-&lt;span style=&quot;color: #eee8aa;&quot;&gt;1&lt;/span&gt;))&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;    &lt;span style=&quot;color: #eee8aa;&quot;&gt;Seq&lt;/span&gt;.&lt;span style=&quot;color: #eee8aa;&quot;&gt;init_infinite&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;triangle_number&lt;/span&gt; &lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;Version 2. Recursive call을 제거..&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Bitstream Vera Sans Mono;}}{\colortbl;??\red64\green196\blue255;\red23\green23\blue23;\red224\green224\blue224;\red238\green232\blue170;}??\fs20 \cf1\cb2\highlight2 let\cf3  \cf4 triangle_numbers\cf3  = \cf4 Seq\cf3 .\cf4 unfold\cf3  (\cf1 fun\cf3  (\cf4 n\cf3 , \cf4 i\cf3 ) \cf1 -&amp;gt;\cf3  \cf4 Some\cf3 (\cf4 n\cf3 , (\cf4 n\cf3 +\cf4 i\cf3 , \cf4 i\cf3 +\cf4 1\cf3 ))) (\cf4 1\cf3 , \cf4 2\cf3 )\par ??}
--&gt;
&lt;div style=&quot;font-family: Bitstream Vera Sans Mono; font-size: 10pt; color: #e0e0e0; background: #171717;&quot;&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;color: #40c4ff;&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;triangle_numbers&lt;/span&gt; = &lt;span style=&quot;color: #eee8aa;&quot;&gt;Seq&lt;/span&gt;.&lt;span style=&quot;color: #eee8aa;&quot;&gt;unfold&lt;/span&gt; (&lt;span style=&quot;color: #40c4ff;&quot;&gt;fun&lt;/span&gt; (&lt;span style=&quot;color: #eee8aa;&quot;&gt;n&lt;/span&gt;, &lt;span style=&quot;color: #eee8aa;&quot;&gt;i&lt;/span&gt;) &lt;span style=&quot;color: #40c4ff;&quot;&gt;-&gt;&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;Some&lt;/span&gt;(&lt;span style=&quot;color: #eee8aa;&quot;&gt;n&lt;/span&gt;, (&lt;span style=&quot;color: #eee8aa;&quot;&gt;n&lt;/span&gt;+&lt;span style=&quot;color: #eee8aa;&quot;&gt;i&lt;/span&gt;, &lt;span style=&quot;color: #eee8aa;&quot;&gt;i&lt;/span&gt;+&lt;span style=&quot;color: #eee8aa;&quot;&gt;1&lt;/span&gt;))) (&lt;span style=&quot;color: #eee8aa;&quot;&gt;1&lt;/span&gt;, &lt;span style=&quot;color: #eee8aa;&quot;&gt;2&lt;/span&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;Version 3. 최적화.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Bitstream Vera Sans Mono;}}{\colortbl;??\red64\green196\blue255;\red23\green23\blue23;\red224\green224\blue224;\red238\green232\blue170;}??\fs20 \cf1\cb2\highlight2 let\cf3  \cf4 triangle_numbers\cf3  = \cf4 Seq\cf3 .\cf4 init_infinite\cf3  (\cf1 fun\cf3  \cf4 n\cf3  \cf1 -&amp;gt;\cf3  (\cf4 n\cf3 +\cf4 2\cf3 )*(\cf4 n\cf3 +\cf4 1\cf3 ) / \cf4 2\cf3 )\par ??}
--&gt;
&lt;div style=&quot;font-family: Bitstream Vera Sans Mono; font-size: 10pt; color: #e0e0e0; background: #171717;&quot;&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;color: #40c4ff;&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;triangle_numbers&lt;/span&gt; = &lt;span style=&quot;color: #eee8aa;&quot;&gt;Seq&lt;/span&gt;.&lt;span style=&quot;color: #eee8aa;&quot;&gt;init_infinite&lt;/span&gt; (&lt;span style=&quot;color: #40c4ff;&quot;&gt;fun&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;n&lt;/span&gt; &lt;span style=&quot;color: #40c4ff;&quot;&gt;-&gt;&lt;/span&gt; (&lt;span style=&quot;color: #eee8aa;&quot;&gt;n&lt;/span&gt;+&lt;span style=&quot;color: #eee8aa;&quot;&gt;2&lt;/span&gt;)*(&lt;span style=&quot;color: #eee8aa;&quot;&gt;n&lt;/span&gt;+&lt;span style=&quot;color: #eee8aa;&quot;&gt;1&lt;/span&gt;) / &lt;span style=&quot;color: #eee8aa;&quot;&gt;2&lt;/span&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;triangle number의 수열을 구했으니 답을 구하면..&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Bitstream Vera Sans Mono;}}{\colortbl;??\red64\green196\blue255;\red23\green23\blue23;\red224\green224\blue224;\red238\green232\blue170;\red96\green255\blue96;}??\fs20 \cf1\cb2\highlight2 let\cf3  \cf4 factorize\cf3  \cf4 n\cf3  =\par ??    \cf1 let\cf3  \cf1 rec\cf3  \cf4 factorize_horse\cf3  \cf4 n\cf3  \cf4 factor\cf3  \cf4 count\cf3  \cf4 result\cf3  =\par ??        \cf1 if\cf3  (\cf4 n\cf3  &amp;lt;= \cf4 1\cf3 ) \cf1 then\cf3  \par ??            \cf4 count\cf3 ::\cf4 result\par ??\cf3         \cf1 else\par ??\cf3             \cf1 match\cf3  (\cf4 n\cf3  % \cf4 factor\cf3 ) \cf1 with\par ??\cf3             | \cf4 0\cf3  \cf1 -&amp;gt;\cf3  (\cf4 factorize_horse\cf3  (\cf4 n\cf3 /\cf4 factor\cf3 ) \cf4 factor\cf3  (\cf4 count\cf3 +\cf4 1\cf3 ) \cf4 result\cf3 )\par ??            | _ \cf1 -&amp;gt;\cf3  (\cf4 factorize_horse\cf3  \cf4 n\cf3  (\cf4 factor\cf3 +\cf4 1\cf3 ) \cf4 0\cf3  (\cf4 count\cf3 ::\cf4 result\cf3 ))           \par ??    \cf4 factorize_horse\cf3  \cf4 n\cf3  \cf4 2\cf3  \cf4 0\cf3  []\par ??        |&amp;gt; \cf4 List\cf3 .\cf4 filter\cf3  (\cf1 fun\cf3  \cf4 x\cf3  \cf1 -&amp;gt;\cf3  \cf4 x\cf3 &amp;lt;&amp;gt;\cf4 0\cf3 )\par ??\par ??\cf1 let\cf3  \cf4 factor_count\cf3  \cf4 n\cf3  =\par ??    \cf4 factorize\cf3  \cf4 n\cf3  \par ??        |&amp;gt; \cf4 List\cf3 .\cf4 map\cf3  (\cf1 fun\cf3  \cf4 x\cf3  \cf1 -&amp;gt;\cf3  \cf4 x\cf3 +\cf4 1\cf3  )\par ??        |&amp;gt; \cf4 List\cf3 .\cf4 fold_left\cf3  (*) \cf4 1\par ??\par ??triangle_numbers\par ??\cf3     |&amp;gt; \cf4 Seq\cf3 .\cf4 filter\cf3  (\cf1 fun\cf3  \cf4 x\cf3  \cf1 -&amp;gt;\cf3  \cf4 500\cf3  &amp;lt; (\cf4 factor_count\cf3  \cf4 x\cf3 ))\par ??    |&amp;gt; \cf4 Seq\cf3 .\cf4 hd\par ??\cf3     |&amp;gt; \cf4 printfn\cf3  \cf5 &quot;Problem #12 = %d&quot;}
--&gt;
&lt;div style=&quot;font-family: Bitstream Vera Sans Mono; font-size: 10pt; color: #e0e0e0; background: #171717;&quot;&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;color: #40c4ff;&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;factorize&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;n&lt;/span&gt; =&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;    &lt;span style=&quot;color: #40c4ff;&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color: #40c4ff;&quot;&gt;rec&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;factorize_horse&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;n&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;factor&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;count&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;result&lt;/span&gt; =&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;        &lt;span style=&quot;color: #40c4ff;&quot;&gt;if&lt;/span&gt; (&lt;span style=&quot;color: #eee8aa;&quot;&gt;n&lt;/span&gt; &amp;lt;= &lt;span style=&quot;color: #eee8aa;&quot;&gt;1&lt;/span&gt;) &lt;span style=&quot;color: #40c4ff;&quot;&gt;then&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;            &lt;span style=&quot;color: #eee8aa;&quot;&gt;count&lt;/span&gt;::&lt;span style=&quot;color: #eee8aa;&quot;&gt;result&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;        &lt;span style=&quot;color: #40c4ff;&quot;&gt;else&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;            &lt;span style=&quot;color: #40c4ff;&quot;&gt;match&lt;/span&gt; (&lt;span style=&quot;color: #eee8aa;&quot;&gt;n&lt;/span&gt; % &lt;span style=&quot;color: #eee8aa;&quot;&gt;factor&lt;/span&gt;) &lt;span style=&quot;color: #40c4ff;&quot;&gt;with&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;            | &lt;span style=&quot;color: #eee8aa;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #40c4ff;&quot;&gt;-&gt;&lt;/span&gt; (&lt;span style=&quot;color: #eee8aa;&quot;&gt;factorize_horse&lt;/span&gt; (&lt;span style=&quot;color: #eee8aa;&quot;&gt;n&lt;/span&gt;/&lt;span style=&quot;color: #eee8aa;&quot;&gt;factor&lt;/span&gt;) &lt;span style=&quot;color: #eee8aa;&quot;&gt;factor&lt;/span&gt; (&lt;span style=&quot;color: #eee8aa;&quot;&gt;count&lt;/span&gt;+&lt;span style=&quot;color: #eee8aa;&quot;&gt;1&lt;/span&gt;) &lt;span style=&quot;color: #eee8aa;&quot;&gt;result&lt;/span&gt;)&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;            | _ &lt;span style=&quot;color: #40c4ff;&quot;&gt;-&gt;&lt;/span&gt; (&lt;span style=&quot;color: #eee8aa;&quot;&gt;factorize_horse&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;n&lt;/span&gt; (&lt;span style=&quot;color: #eee8aa;&quot;&gt;factor&lt;/span&gt;+&lt;span style=&quot;color: #eee8aa;&quot;&gt;1&lt;/span&gt;) &lt;span style=&quot;color: #eee8aa;&quot;&gt;0&lt;/span&gt; (&lt;span style=&quot;color: #eee8aa;&quot;&gt;count&lt;/span&gt;::&lt;span style=&quot;color: #eee8aa;&quot;&gt;result&lt;/span&gt;))           &lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;    &lt;span style=&quot;color: #eee8aa;&quot;&gt;factorize_horse&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;n&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;2&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;0&lt;/span&gt; []&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;        |&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;List&lt;/span&gt;.&lt;span style=&quot;color: #eee8aa;&quot;&gt;filter&lt;/span&gt; (&lt;span style=&quot;color: #40c4ff;&quot;&gt;fun&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;x&lt;/span&gt; &lt;span style=&quot;color: #40c4ff;&quot;&gt;-&gt;&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;x&lt;/span&gt;&amp;lt;&gt;&lt;span style=&quot;color: #eee8aa;&quot;&gt;0&lt;/span&gt;)&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt; &lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;color: #40c4ff;&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;factor_count&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;n&lt;/span&gt; =&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;    &lt;span style=&quot;color: #eee8aa;&quot;&gt;factorize&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;n&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;        |&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;List&lt;/span&gt;.&lt;span style=&quot;color: #eee8aa;&quot;&gt;map&lt;/span&gt; (&lt;span style=&quot;color: #40c4ff;&quot;&gt;fun&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;x&lt;/span&gt; &lt;span style=&quot;color: #40c4ff;&quot;&gt;-&gt;&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;x&lt;/span&gt;+&lt;span style=&quot;color: #eee8aa;&quot;&gt;1&lt;/span&gt; )&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;        |&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;List&lt;/span&gt;.&lt;span style=&quot;color: #eee8aa;&quot;&gt;fold_left&lt;/span&gt; (*) &lt;span style=&quot;color: #eee8aa;&quot;&gt;1&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt; &lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;color: #eee8aa;&quot;&gt;triangle_numbers&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;    |&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;Seq&lt;/span&gt;.&lt;span style=&quot;color: #eee8aa;&quot;&gt;filter&lt;/span&gt; (&lt;span style=&quot;color: #40c4ff;&quot;&gt;fun&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;x&lt;/span&gt; &lt;span style=&quot;color: #40c4ff;&quot;&gt;-&gt;&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;500&lt;/span&gt; &amp;lt; (&lt;span style=&quot;color: #eee8aa;&quot;&gt;factor_count&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;x&lt;/span&gt;))&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;    |&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;Seq&lt;/span&gt;.&lt;span style=&quot;color: #eee8aa;&quot;&gt;hd&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;    |&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;printfn&lt;/span&gt; &lt;span style=&quot;color: #60ff60;&quot;&gt;&quot;Problem #12 = %d&quot;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
약수의 개수를 빨리 구하려고, 소인수 분해를 하였다.&lt;/div&gt;
&lt;div&gt;
약수 개수를 구하기 위해 모든 약수가 무엇인지 다 파악한다면..&lt;/div&gt;
&lt;div&gt;
얼마나 느릴지는 장담할 수 없음. ㅋ&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;</description>
			<category>내 생산물</category>
			<category>F#</category>
			<category>FSharp</category>
			<category>project euler</category>
			<author>U_Seung</author>
			<guid>http://9eye.net/346</guid>
			<comments>http://9eye.net/entry/F-Project-Euler-Problem-12#entry346comment</comments>
			<pubDate>Tue, 12 May 2009 13:58:39 +0900</pubDate>
		</item>
		<item>
			<title>F#, Project Euler - Problem #20</title>
			<link>http://9eye.net/entry/F-Project-Euler-Problem-20</link>
			<description>&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(203, 203, 203); border-right-color: rgb(203, 203, 203); border-bottom-color: rgb(203, 203, 203); border-left-color: rgb(203, 203, 203); background-color: rgb(255, 255, 255); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
Problem #20. Find the sum of the digits in the number 100!&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
번역: 100! 값의 모든 자릿수의 합을 구하시오.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
 여러가지 방법이 있을 수 있지만.&lt;/div&gt;
&lt;div&gt;
 가장 직관적인 방법은 계산해서 더하면 된다.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Bitstream Vera Sans Mono;}}{\colortbl;??\red64\green196\blue255;\red23\green23\blue23;\red224\green224\blue224;\red238\green232\blue170;\red96\green255\blue96;}??\fs20 \cf1\cb2\highlight2 open\cf3  \cf4 Microsoft\cf3 .\cf4 FSharp\cf3 .\cf4 Math\par ??\par ??\cf3 (\cf4 BigInt\cf3 .\cf4 Factorial\cf3  (\cf4 BigInt\cf3  \cf4 100\cf3 )).\cf4 ToString\cf3 () \par ??    |&amp;gt; \cf4 Seq\cf3 .\cf4 map\cf3  (\cf1 fun\cf3  \cf4 x\cf3  \cf1 -&amp;gt;\cf3  (\cf4 int\cf3  \cf4 x\cf3 ) - (\cf4 int\cf3  \cf5 &#039;0&#039;\cf3 )) \par ??    |&amp;gt; \cf4 Seq\cf3 .\cf4 sum\par ??\cf3     |&amp;gt; \cf4 printfn\cf3  \cf5 &quot;Problem #20 = %d&quot;\par ??}
--&gt;
&lt;div style=&quot;font-family: Bitstream Vera Sans Mono; font-size: 10pt; color: #e0e0e0; background: #171717;&quot;&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;color: #40c4ff;&quot;&gt;open&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;Microsoft&lt;/span&gt;.&lt;span style=&quot;color: #eee8aa;&quot;&gt;FSharp&lt;/span&gt;.&lt;span style=&quot;color: #eee8aa;&quot;&gt;Math&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt; &lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;(&lt;span style=&quot;color: #eee8aa;&quot;&gt;BigInt&lt;/span&gt;.&lt;span style=&quot;color: #eee8aa;&quot;&gt;Factorial&lt;/span&gt; (&lt;span style=&quot;color: #eee8aa;&quot;&gt;BigInt&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;100&lt;/span&gt;)).&lt;span style=&quot;color: #eee8aa;&quot;&gt;ToString&lt;/span&gt;() &lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;    |&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;Seq&lt;/span&gt;.&lt;span style=&quot;color: #eee8aa;&quot;&gt;map&lt;/span&gt; (&lt;span style=&quot;color: #40c4ff;&quot;&gt;fun&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;x&lt;/span&gt; &lt;span style=&quot;color: #40c4ff;&quot;&gt;-&gt;&lt;/span&gt; (&lt;span style=&quot;color: #eee8aa;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;x&lt;/span&gt;) - (&lt;span style=&quot;color: #eee8aa;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #60ff60;&quot;&gt;&#039;0&#039;&lt;/span&gt;)) &lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;    |&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;Seq&lt;/span&gt;.&lt;span style=&quot;color: #eee8aa;&quot;&gt;sum&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px;&quot;&gt;    |&gt; &lt;span style=&quot;color: #eee8aa;&quot;&gt;printfn&lt;/span&gt; &lt;span style=&quot;color: #60ff60;&quot;&gt;&quot;Problem #20 = %d&quot;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;</description>
			<category>내 생산물</category>
			<category>F#</category>
			<category>FSharp</category>
			<category>project euler</category>
			<author>U_Seung</author>
			<guid>http://9eye.net/345</guid>
			<comments>http://9eye.net/entry/F-Project-Euler-Problem-20#entry345comment</comments>
			<pubDate>Tue, 12 May 2009 13:42:14 +0900</pubDate>
		</item>
	</channel>
</rss>
