<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=Memo</id>
	<title>Memo - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=Memo"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=Memo&amp;action=history"/>
	<updated>2026-05-15T03:03:35Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=Memo&amp;diff=84655&amp;oldid=prev</id>
		<title>Maintenance script: Repair batch-0002 pages from live compare</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=Memo&amp;diff=84655&amp;oldid=prev"/>
		<updated>2026-03-27T00:16:08Z</updated>

		<summary type="html">&lt;p&gt;Repair batch-0002 pages from live compare&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:16, 27 March 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l12&quot;&gt;Line 12:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 12:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[http://kin.naver.com/knowhow/entry.php?eid=sXanZUDMReh3tKhs1VJ30OlMQ3piSgKm 마지막 사진의 진실은...?]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[http://kin.naver.com/knowhow/entry.php?eid=sXanZUDMReh3tKhs1VJ30OlMQ3piSgKm 마지막 사진의 진실은...?]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[:File:&lt;/del&gt;ReadMe.txt&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|ReadMe.txt]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;ReadMe.txt&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  /*&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  /*&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l220&quot;&gt;Line 220:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 220:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  HOST = (&amp;#039;127.0.0.1&amp;#039;, 9999)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  HOST = (&amp;#039;127.0.0.1&amp;#039;, 9999)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ClientList = &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ClientList = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&amp;amp;#93;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  bufsize = 1024&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  bufsize = 1024&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l279&quot;&gt;Line 279:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 279:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	SOCKADDR_IN	server_addr;	// 네트워크의 정보를 담을 structure	생성.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	SOCKADDR_IN	server_addr;	// 네트워크의 정보를 담을 structure	생성.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	char msg&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[] &lt;/del&gt;= &amp;quot;My name is Na Hwidong,.&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	char msg&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&amp;amp;#93; &lt;/ins&gt;= &amp;quot;My name is Na Hwidong,.&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	char question&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;200&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	char question&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;200&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93;&lt;/ins&gt;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	int queslen;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	int queslen;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l317&quot;&gt;Line 317:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 317:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  		// 연결하고 뭘 해야지 그냥 있었네..;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  		// 연결하고 뭘 해야지 그냥 있었네..;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  		queslen = recv( server_sock, question, sizeof(question), 0);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  		queslen = recv( server_sock, question, sizeof(question), 0);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  		question&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;queslen&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;] &lt;/del&gt;= &amp;#039;&amp;#039;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  		question&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;queslen&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93; &lt;/ins&gt;= &amp;#039;&amp;#039;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  		printf( &amp;quot;I have to answer the next question. %sn&amp;quot;, question);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  		printf( &amp;quot;I have to answer the next question. %sn&amp;quot;, question);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  		if( send(server_sock, msg, sizeof(msg), 0) == -1 )&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  		if( send(server_sock, msg, sizeof(msg), 0) == -1 )&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l337&quot;&gt;Line 337:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 337:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  class Reporter:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  class Reporter:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      def __init__(self):&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      def __init__(self):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          self.companies = &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          self.companies = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&amp;amp;#93;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;           &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;           &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      def collectNews(self, aNews):&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      def collectNews(self, aNews):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l386&quot;&gt;Line 386:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 386:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      def testNotify(self):&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      def testNotify(self):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          reporter = Reporter()&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          reporter = Reporter()&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          companies = &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;SportNewsCompany( reporter ),&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          companies = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;SportNewsCompany( reporter ),&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                       EconomyNewsCompany( reporter )&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                       EconomyNewsCompany( reporter )&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          news=&amp;quot;He is dead.&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          news=&amp;quot;He is dead.&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          reporter.collectNews(news)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          reporter.collectNews(news)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l397&quot;&gt;Line 397:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 397:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      def testCorrectNews(self):&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      def testCorrectNews(self):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          reporter = Reporter()&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          reporter = Reporter()&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          companies = &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;SportNewsCompany( reporter ),&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          companies = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;SportNewsCompany( reporter ),&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                       EconomyNewsCompany( reporter )&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                       EconomyNewsCompany( reporter )&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          theCompany = HanguryeNewsCompany(reporter)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          theCompany = HanguryeNewsCompany(reporter)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          theCompany.correctNews(&amp;quot;He is still alive&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          theCompany.correctNews(&amp;quot;He is still alive&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=Memo&amp;diff=34637&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:23, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=Memo&amp;diff=34637&amp;oldid=prev"/>
		<updated>2021-02-07T05:23:46Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;unicode(&amp;#039;배&amp;#039;,&amp;#039;utf-8&amp;#039;, &amp;#039;replace&amp;#039;).encode(&amp;#039;euc-kr&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
우리 은행 495-156526-02-001 (남상협)&lt;br /&gt;
&lt;br /&gt;
http://www.freenetpages.co.uk/hp/alan.gauld/tutintro.htm&lt;br /&gt;
&lt;br /&gt;
http://search.costcentral.com/search?p=Q&amp;amp;srid=S9%2d3&amp;amp;lbc=costcentral&amp;amp;ts=custom&amp;amp;w=ThinkPad&amp;amp;uid=975848396&amp;amp;method=and&amp;amp;isort=price&amp;amp;srt=150&lt;br /&gt;
&lt;br /&gt;
http://dojeun.egloos.com/315019/&lt;br /&gt;
&lt;br /&gt;
[http://blog.naver.com/anyray?Redirect=Log&amp;amp;logNo=50006688630 여름인데 놀러갈래!]&lt;br /&gt;
&lt;br /&gt;
[http://kin.naver.com/knowhow/entry.php?eid=sXanZUDMReh3tKhs1VJ30OlMQ3piSgKm 마지막 사진의 진실은...?]&lt;br /&gt;
[[:File:ReadMe.txt|ReadMe.txt]]&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
 Packet Sniffer&lt;br /&gt;
 12.10.02&lt;br /&gt;
 Made By KT&lt;br /&gt;
 &lt;br /&gt;
 RFC 768 User Datagram Protocol&lt;br /&gt;
 RFC 791 Internet Protocol&lt;br /&gt;
 RFC 792 Internet Control Message Protocol&lt;br /&gt;
 RFC 793 Transmission Control Protocol&lt;br /&gt;
 */&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 #define MAX_PACKET_SIZE 65525&lt;br /&gt;
 #define BIND2IP &amp;quot;165.194.17.76&amp;quot;  //Put you&amp;#039;r IP in her&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;amp;lt;stdio.h&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;winsock2.h&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;mstcpip.h&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;ws2tcpip.h&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 typedef struct iphdr&lt;br /&gt;
 {&lt;br /&gt;
 	unsigned char VerIHL; //Version and IP Header Length&lt;br /&gt;
 	unsigned char Tos;&lt;br /&gt;
 	unsigned short Total_len;&lt;br /&gt;
 	unsigned short ID;&lt;br /&gt;
 	unsigned short Flags_and_Frags; //Flags 3 bits and Fragment offset 13 bits&lt;br /&gt;
 	unsigned char TTL;&lt;br /&gt;
 	unsigned char Protocol;&lt;br /&gt;
 	unsigned short Checksum;&lt;br /&gt;
 	unsigned long SrcIP;&lt;br /&gt;
 	unsigned long DstIP;&lt;br /&gt;
 	//unsigned long Options_and_Padding;&lt;br /&gt;
 } IpHeader;&lt;br /&gt;
 &lt;br /&gt;
 typedef struct port&lt;br /&gt;
 {&lt;br /&gt;
 	unsigned short SrcPort;&lt;br /&gt;
 	unsigned short DstPort;&lt;br /&gt;
 } TcpUdpPort;&lt;br /&gt;
 &lt;br /&gt;
 void ProcessPacket(char* Buffer, int Size)&lt;br /&gt;
 {&lt;br /&gt;
 	IpHeader *iphdr;&lt;br /&gt;
 	TcpUdpPort *port;&lt;br /&gt;
 	struct sockaddr_in SockAddr;&lt;br /&gt;
 	unsigned short iphdrlen;&lt;br /&gt;
 	char C;&lt;br /&gt;
 &lt;br /&gt;
 	iphdr = (IpHeader *)Buffer;&lt;br /&gt;
 &lt;br /&gt;
 	iphdrlen = (iphdr-&amp;amp;gt;VerIHL &amp;amp;lt;&amp;amp;lt; 4);&lt;br /&gt;
 	memcpy(&amp;amp;amp;C, &amp;amp;amp;iphdrlen, 1);&lt;br /&gt;
 	iphdrlen = (C &amp;amp;gt;&amp;amp;gt; 4) * 4; //20&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 	memset(&amp;amp;amp;SockAddr, 0, sizeof(SockAddr));&lt;br /&gt;
 	SockAddr.sin_addr.s_addr = iphdr-&amp;amp;gt;SrcIP;&lt;br /&gt;
 	printf(&amp;quot;Packet From: %s &amp;quot;, inet_ntoa(SockAddr.sin_addr));&lt;br /&gt;
 	memset(&amp;amp;amp;SockAddr, 0, sizeof(SockAddr));&lt;br /&gt;
 	SockAddr.sin_addr.s_addr = iphdr-&amp;amp;gt;DstIP;&lt;br /&gt;
 	printf(&amp;quot;To: %s &amp;quot;, inet_ntoa(SockAddr.sin_addr));&lt;br /&gt;
 &lt;br /&gt;
 	switch (iphdr-&amp;amp;gt;Protocol)&lt;br /&gt;
 	{&lt;br /&gt;
 	case 1:&lt;br /&gt;
 		printf(&amp;quot;Protocol: ICMP &amp;quot;);&lt;br /&gt;
 		break;&lt;br /&gt;
 	case 2:&lt;br /&gt;
 		printf(&amp;quot;Protocol: IGMP &amp;quot;);&lt;br /&gt;
 		break;&lt;br /&gt;
 	case 6:&lt;br /&gt;
 		printf(&amp;quot;Protocol: TCP &amp;quot;);&lt;br /&gt;
 		if (Size &amp;amp;gt; iphdrlen)&lt;br /&gt;
 		{&lt;br /&gt;
 			port = (TcpUdpPort *)(Buffer + iphdrlen);&lt;br /&gt;
 			printf(&amp;quot;From Port: %i To Port: %i &amp;quot;, ntohs(port-&amp;amp;gt;SrcPort), ntohs(port-&amp;amp;gt;DstPort));&lt;br /&gt;
 		}&lt;br /&gt;
 		break;&lt;br /&gt;
 	case 17:&lt;br /&gt;
 		printf(&amp;quot;Protocol: UDP &amp;quot;);&lt;br /&gt;
 		if (Size &amp;amp;gt; iphdrlen)&lt;br /&gt;
 		{&lt;br /&gt;
 			port = (TcpUdpPort *)(Buffer + iphdrlen);&lt;br /&gt;
 			printf(&amp;quot;From Port: %i To Port: %i &amp;quot;, ntohs(port-&amp;amp;gt;SrcPort), ntohs(port-&amp;amp;gt;DstPort));&lt;br /&gt;
 		}&lt;br /&gt;
 		break;&lt;br /&gt;
 	default:&lt;br /&gt;
 		printf(&amp;quot;Protocol: %i &amp;quot;, iphdr-&amp;amp;gt;Protocol); &lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	printf(&amp;quot;n&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void StartSniffing(SOCKET Sock)&lt;br /&gt;
 {&lt;br /&gt;
 	char *RecvBuffer = (char *)malloc(MAX_PACKET_SIZE + 1);&lt;br /&gt;
 	int BytesRecv, FromLen;&lt;br /&gt;
 	struct sockaddr_in From;&lt;br /&gt;
 &lt;br /&gt;
 	if (RecvBuffer == NULL)&lt;br /&gt;
 	{&lt;br /&gt;
 		printf(&amp;quot;malloc() failed.n&amp;quot;);&lt;br /&gt;
 		exit(-1);&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	FromLen = sizeof(From);&lt;br /&gt;
 &lt;br /&gt;
 	do&lt;br /&gt;
 	{&lt;br /&gt;
 		memset(RecvBuffer, 0, MAX_PACKET_SIZE + 1);&lt;br /&gt;
 		memset(&amp;amp;amp;From, 0, sizeof(From));&lt;br /&gt;
 &lt;br /&gt;
 		BytesRecv = recvfrom(Sock, RecvBuffer, MAX_PACKET_SIZE, 0, (sockaddr *)&amp;amp;amp;From, &amp;amp;amp;FromLen);&lt;br /&gt;
 		&lt;br /&gt;
 		if (BytesRecv &amp;amp;gt; 0)&lt;br /&gt;
 		{&lt;br /&gt;
 			ProcessPacket(RecvBuffer, BytesRecv);&lt;br /&gt;
 		}&lt;br /&gt;
 		else&lt;br /&gt;
 		{&lt;br /&gt;
 			printf( &amp;quot;recvfrom() failed.n&amp;quot;);&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 	} while (BytesRecv &amp;amp;gt; 0);&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 	free(RecvBuffer);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int main()&lt;br /&gt;
 {&lt;br /&gt;
 	WSAData wsaData;&lt;br /&gt;
 	SOCKET Sock;&lt;br /&gt;
 	struct sockaddr_in SockAddr;&lt;br /&gt;
 	DWORD BytesReturned;&lt;br /&gt;
 	int I = 1;&lt;br /&gt;
 &lt;br /&gt;
 	try&lt;br /&gt;
 	{&lt;br /&gt;
 &lt;br /&gt;
 		if (WSAStartup(MAKEWORD(2, 2), &amp;amp;amp;wsaData) != 0)&lt;br /&gt;
 		{&lt;br /&gt;
 			printf(&amp;quot;WSAStartup() failed.n&amp;quot;);&lt;br /&gt;
 			exit(-1);&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		Sock = socket(AF_INET, SOCK_RAW, IPPROTO_IP);&lt;br /&gt;
 &lt;br /&gt;
 		if (Sock == INVALID_SOCKET)&lt;br /&gt;
 		{&lt;br /&gt;
 			printf(&amp;quot;socket() failed.n&amp;quot;);&lt;br /&gt;
 			exit(-1);&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		memset(&amp;amp;amp;SockAddr, 0, sizeof(SockAddr));&lt;br /&gt;
 		SockAddr.sin_addr.s_addr = inet_addr(BIND2IP);&lt;br /&gt;
 		SockAddr.sin_family = AF_INET;&lt;br /&gt;
 		SockAddr.sin_port = 0;&lt;br /&gt;
 &lt;br /&gt;
 		if (bind(Sock, (sockaddr *)&amp;amp;amp;SockAddr, sizeof(SockAddr)) == SOCKET_ERROR)&lt;br /&gt;
 		{&lt;br /&gt;
 			printf(&amp;quot;bind(%s) failed.n&amp;quot;, BIND2IP);&lt;br /&gt;
 			exit(-1);&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		if (WSAIoctl(Sock, SIO_RCVALL, &amp;amp;amp;I, sizeof(I), NULL, NULL, &amp;amp;amp;BytesReturned, NULL, NULL) == SOCKET_ERROR)&lt;br /&gt;
 		{&lt;br /&gt;
 			printf(&amp;quot;WSAIoctl() failed.n&amp;quot;);&lt;br /&gt;
 			exit(-1);&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		StartSniffing(Sock);&lt;br /&gt;
 	}&lt;br /&gt;
 	catch (...)&lt;br /&gt;
 	{&lt;br /&gt;
 		printf(&amp;quot;CRASHn&amp;quot;);&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	closesocket(Sock);&lt;br /&gt;
 	WSACleanup();&lt;br /&gt;
 &lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
----&lt;br /&gt;
[http://c2.com/cgi/wiki?TopTenWikiEngines 위키의 종류] 에는&lt;br /&gt;
* MoinMoinWiki&lt;br /&gt;
* MoniWiki&lt;br /&gt;
* UseModeWiki - perl&lt;br /&gt;
* MediaWiki&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
이 밖에도 여러가지 언어로 만든 위키가 있다. 매크로를 하나 추가하는 방법이 모두 다르다. 여러 위키에 적용할 수 있는 플러그인을 만들 수 있을까? &lt;br /&gt;
----&lt;br /&gt;
영어로 말해야 하는 환경을 접하고 답답함을 느끼면 영어공부 해야겠다는 매우 큰 동기가 생긴다.&lt;br /&gt;
지금 단어공부가 필요하다.&lt;br /&gt;
쓰기 훈련은 NoSmok:영어로일기쓰기 를 해야할까? 아직 잘 모르겠다.&lt;br /&gt;
svn://zeropage.org/home/SVN/leonardong&lt;br /&gt;
htpp://zeropage.org/trac/leonardong/&lt;br /&gt;
----&lt;br /&gt;
서버&lt;br /&gt;
 from SocketServer import *&lt;br /&gt;
 import thread&lt;br /&gt;
 from threading import *&lt;br /&gt;
 &lt;br /&gt;
 HOST = (&amp;#039;127.0.0.1&amp;#039;, 9999)&lt;br /&gt;
 ClientList = []&lt;br /&gt;
 bufsize = 1024&lt;br /&gt;
 &lt;br /&gt;
 class ConnectManager(Thread):&lt;br /&gt;
     def __init__(self, conn):&lt;br /&gt;
         Thread.__init__(self)&lt;br /&gt;
         self.conn = conn&lt;br /&gt;
     def run(self):&lt;br /&gt;
         print self.conn.getpeername()&lt;br /&gt;
         while True:&lt;br /&gt;
             try:&lt;br /&gt;
                 self.conn.send(&amp;quot;I&amp;#039;m the Boss&amp;quot;)&lt;br /&gt;
                 data = self.conn.recv(bufsize)&lt;br /&gt;
                 print data&lt;br /&gt;
             except:&lt;br /&gt;
                 self.conn.close()&lt;br /&gt;
                 break&lt;br /&gt;
 &lt;br /&gt;
 class MyServer(BaseRequestHandler):&lt;br /&gt;
     def handle(self):&lt;br /&gt;
         conn = self.request&lt;br /&gt;
         print conn&lt;br /&gt;
         if conn:&lt;br /&gt;
             connManager = ConnectManager(self.request)&lt;br /&gt;
             connManager.start()&lt;br /&gt;
             connManager.run()&lt;br /&gt;
             ClientList.append(connManager)&lt;br /&gt;
 &lt;br /&gt;
     def finish(self):&lt;br /&gt;
         print &amp;quot;finished&amp;quot;&lt;br /&gt;
     def setup(self):&lt;br /&gt;
         print &amp;quot;setup&amp;quot;     &lt;br /&gt;
     &lt;br /&gt;
 if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
     my_server = ThreadingTCPServer(HOST, MyServer)&lt;br /&gt;
     my_server.serve_forever()&lt;br /&gt;
&lt;br /&gt;
클라이언트&lt;br /&gt;
 //Project -&amp;amp;gt; Setting -&amp;amp;gt; LINK 메뉴 -&amp;amp;gt; Object/library modules: 의 끝부분에 ws2_32.lib 를 추가한다. &lt;br /&gt;
 &lt;br /&gt;
 #include &amp;amp;lt;stdio.h&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;winsock2.h&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #define	PORT 9999		 //	서버의 9999번 포트를 연다&lt;br /&gt;
 #define	BACKLOG	5&lt;br /&gt;
 #define SERVER_IP &amp;quot;127.0.0.1&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 void error(char	*buf)&lt;br /&gt;
 {&lt;br /&gt;
 	puts(buf), exit(1);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 main(){&lt;br /&gt;
 	WSADATA	wsaData;&lt;br /&gt;
 &lt;br /&gt;
 	SOCKET server_sock;		   // 서버의 socket을 생성&lt;br /&gt;
 &lt;br /&gt;
 	SOCKADDR_IN	server_addr;	// 네트워크의 정보를 담을 structure	생성.&lt;br /&gt;
 &lt;br /&gt;
 	char msg[] = &amp;quot;My name is Na Hwidong,.&amp;quot;;&lt;br /&gt;
 	char question[200];&lt;br /&gt;
 	int queslen;&lt;br /&gt;
 &lt;br /&gt;
 	if(	WSAStartup(MAKEWORD(2,2), &amp;amp;amp;wsaData)	== -1 )&lt;br /&gt;
 		error(&amp;quot;WSAStartup Error&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 	// socket 설정&lt;br /&gt;
 	// 프로그래머는	이것을 통해	네트워크와 대화를 한다.&lt;br /&gt;
 &lt;br /&gt;
 	server_sock	= socket(AF_INET, SOCK_STREAM, 0);&lt;br /&gt;
 	if(	server_sock	== -1 )&lt;br /&gt;
 		error(&amp;quot;server socket error&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 	// 네트웍 정보 설정&lt;br /&gt;
 	// 이것은 프로그램이 socket과 연결할 정보를	담고있다.&lt;br /&gt;
 &lt;br /&gt;
 	memset((SOCKADDR_IN	*)&amp;amp;amp;server_addr,	0, sizeof(SOCKADDR_IN));&lt;br /&gt;
 	// struct sockaddr_in	 -&amp;amp;gt;	   SOCKADDR_IN&lt;br /&gt;
 	server_addr.sin_family = AF_INET;&lt;br /&gt;
 	server_addr.sin_addr.s_addr&lt;br /&gt;
 		= inet_addr(SERVER_IP);	 //	로컬 주소로 설정한다.&lt;br /&gt;
 	server_addr.sin_port = htons(PORT);&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 	// 서버에 연결한다. 시도나 해보자.&lt;br /&gt;
 	if(	connect(server_sock,&lt;br /&gt;
 			(struct sockaddr *)&amp;amp;amp;server_addr,&lt;br /&gt;
 			 sizeof(struct	sockaddr)) == -1 )&lt;br /&gt;
 		fprintf(stderr,	&amp;quot;서버에	connect	할 수 없습니다.&amp;quot;), exit(1);	&lt;br /&gt;
 &lt;br /&gt;
 	&lt;br /&gt;
 	for( int i = 0 ; i &amp;amp;lt; 3 ; i++ ){&lt;br /&gt;
 &lt;br /&gt;
 		// 연결하고 뭘 해야지 그냥 있었네..;;&lt;br /&gt;
 		queslen = recv( server_sock, question, sizeof(question), 0);&lt;br /&gt;
 		question[queslen] = &amp;#039;&amp;#039;;&lt;br /&gt;
 		printf( &amp;quot;I have to answer the next question. %sn&amp;quot;, question);&lt;br /&gt;
 		if( send(server_sock, msg, sizeof(msg), 0) == -1 )&lt;br /&gt;
 			fprintf(stderr, &amp;quot;send error&amp;quot;); &lt;br /&gt;
 		printf( &amp;quot;I sent an answer. The answer is %srn&amp;quot;, msg);&lt;br /&gt;
 		system(&amp;quot;pause&amp;quot;);&lt;br /&gt;
 	}&lt;br /&gt;
 	WSACleanup();&lt;br /&gt;
 &lt;br /&gt;
 	exit(0);&lt;br /&gt;
 	// exit로 종료를 하면 모든 파일	디스크립터를 자동으로 닫고 종료한다.&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
ObserverPattern 연습&lt;br /&gt;
신문을 비유로 들면 역할이 두 개로 나뉜다. 한쪽은 신문내용을 원하는 대로 편집하는 신문사, 한쪽은 신문 내용을 제보하는 취재 기자이다.&lt;br /&gt;
우리의 취재 기자는 너무나 소명의식이 강하기 때문에 자신이 새로 알게 된 정보를 즉각 신문사에 알린다. 또한 어떤 신문사 쪽에서 기자에게 정보가 틀렸다고 알려주면, 기자는 다른 신문사에게도 모두 새로운 정보를 알려준다.&lt;br /&gt;
 import unittest&lt;br /&gt;
 &lt;br /&gt;
 class Reporter:&lt;br /&gt;
     def __init__(self):&lt;br /&gt;
         self.companies = []&lt;br /&gt;
         &lt;br /&gt;
     def collectNews(self, aNews):&lt;br /&gt;
         self.news = aNews&lt;br /&gt;
         &lt;br /&gt;
     def addCompany(self, anObserverCompany):&lt;br /&gt;
         self.companies.append( anObserverCompany )&lt;br /&gt;
         &lt;br /&gt;
     def notify(self):&lt;br /&gt;
         for each in self.companies:&lt;br /&gt;
             each.update()&lt;br /&gt;
             &lt;br /&gt;
 class NewsCompany:&lt;br /&gt;
     def __init__(self, reporter):&lt;br /&gt;
         self.reporter = reporter&lt;br /&gt;
         reporter.addCompany(self)&lt;br /&gt;
         self.news = &amp;quot;&amp;quot;&lt;br /&gt;
         &lt;br /&gt;
     def update(self):&lt;br /&gt;
         self.news = self.reporter.news&lt;br /&gt;
 &lt;br /&gt;
 class SportNewsCompany(NewsCompany):&lt;br /&gt;
     def __init__(self, reporter):&lt;br /&gt;
         NewsCompany.__init__(self,reporter)&lt;br /&gt;
 &lt;br /&gt;
 class EconomyNewsCompany(NewsCompany):&lt;br /&gt;
     def __init__(self, reporter):&lt;br /&gt;
         NewsCompany.__init__(self,reporter)&lt;br /&gt;
 &lt;br /&gt;
 class HanguryeNewsCompany(NewsCompany):&lt;br /&gt;
     def __init__(self, reporter):&lt;br /&gt;
         NewsCompany.__init__(self,reporter)&lt;br /&gt;
 &lt;br /&gt;
     def correctNews(self, aNews):&lt;br /&gt;
         self.reporter.collectNews(aNews)&lt;br /&gt;
         self.reporter.notify()&lt;br /&gt;
 &lt;br /&gt;
        &lt;br /&gt;
 class TestObserverPattern(unittest.TestCase):&lt;br /&gt;
     def testUpdate(self):&lt;br /&gt;
         reporter = Reporter()&lt;br /&gt;
         company = NewsCompany(reporter=reporter)&lt;br /&gt;
         news=&amp;quot;He is dead.&amp;quot;&lt;br /&gt;
         reporter.collectNews(news)&lt;br /&gt;
         company.update()&lt;br /&gt;
         self.assertEquals( news, company.news )&lt;br /&gt;
         &lt;br /&gt;
     def testNotify(self):&lt;br /&gt;
         reporter = Reporter()&lt;br /&gt;
         companies = [SportNewsCompany( reporter ),&lt;br /&gt;
                      EconomyNewsCompany( reporter )]&lt;br /&gt;
         news=&amp;quot;He is dead.&amp;quot;&lt;br /&gt;
         reporter.collectNews(news)&lt;br /&gt;
         reporter.notify()&lt;br /&gt;
         for company in companies:&lt;br /&gt;
             self.assertEquals( company.news, reporter.news )&lt;br /&gt;
 &lt;br /&gt;
 class TestCompany(unittest.TestCase):&lt;br /&gt;
     def testCorrectNews(self):&lt;br /&gt;
         reporter = Reporter()&lt;br /&gt;
         companies = [SportNewsCompany( reporter ),&lt;br /&gt;
                      EconomyNewsCompany( reporter )]&lt;br /&gt;
         theCompany = HanguryeNewsCompany(reporter)&lt;br /&gt;
         theCompany.correctNews(&amp;quot;He is still alive&amp;quot;)&lt;br /&gt;
         self.assertEquals( reporter.news, theCompany.news )&lt;br /&gt;
         for company in companies:&lt;br /&gt;
             self.assertEquals( company.news, reporter.news )&lt;br /&gt;
 &lt;br /&gt;
     def xtestTwoRepoter(self):&lt;br /&gt;
         reporter = Reporter()&lt;br /&gt;
         company = BigNewsCompany(reporter)&lt;br /&gt;
         anotherReporter = Reporter()&lt;br /&gt;
         anotherReporter.collectNews( &amp;quot;She..&amp;quot; )&lt;br /&gt;
         company.hire( anotherReporter )&lt;br /&gt;
         anotherReporter.notify()&lt;br /&gt;
         self.assertEquals( &amp;quot;She..&amp;quot;, company.news )&lt;br /&gt;
         reporter.collectNews( &amp;quot;I&amp;#039;m different.&amp;quot; )&lt;br /&gt;
         reporter.notify()&lt;br /&gt;
         self.assertEquals( &amp;quot;I&amp;#039;m different&amp;quot;, company.news )&lt;br /&gt;
 if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
     unittest.main(argv=(&amp;#039;&amp;#039;,&amp;#039;-v&amp;#039;))&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>