<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="http://rss.egloos.com/style/blog.xsl" type="text/xsl" media="screen"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
	<title>퓨리넬의 혼잣말</title>
	<link>http://p5ydhcw.egloos.com</link>
	<description>생각의 흔적, 삶의 흔적, 고통의 흔적, 사념의 흔적, 즐거움의 흔적. . . . . . 개인적인 주절거림이 있는곳입니다.
쓸만한 정보같은건 가뭄에 콩나듯 있습니다.</description>
	<language>ko</language>
	<pubDate>Sat, 21 Nov 2009 15:30:24 GMT</pubDate>
	<generator>Egloos</generator>
	<image>
		<title>퓨리넬의 혼잣말</title>
		<url>http://pds6.egloos.com/logo/200710/16/31/c0065531.jpg</url>
		<link>http://p5ydhcw.egloos.com</link>
		<width>80</width>
		<height>60</height>
		<description>생각의 흔적, 삶의 흔적, 고통의 흔적, 사념의 흔적, 즐거움의 흔적. . . . . . 개인적인 주절거림이 있는곳입니다.
쓸만한 정보같은건 가뭄에 콩나듯 있습니다.</description>
	</image>
  	<item>
		<title><![CDATA[ ㅁㅇㅊ ]]> </title>
		<link>http://p5ydhcw.egloos.com/5176000</link>
		<guid>http://p5ydhcw.egloos.com/5176000</guid>
		<description>
			<![CDATA[ 
  ㅁㅊㅍ<br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200911/21/31/c0065531_4b06c91909fc2.jpg" width="500" height="1768" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200911/21/31/c0065531_4b06c91909fc2.jpg');" /></div>			 ]]> 
		</description>

		<comments>http://p5ydhcw.egloos.com/5176000#comments</comments>
		<pubDate>Fri, 20 Nov 2009 16:51:50 GMT</pubDate>
		<dc:creator>퓨리넬</dc:creator>
	</item>
	<item>
		<title><![CDATA[ DazzlingPiano 9월 23일 대전시청 브런치 콘서트 ]]> </title>
		<link>http://p5ydhcw.egloos.com/5113550</link>
		<guid>http://p5ydhcw.egloos.com/5113550</guid>
		<description>
			<![CDATA[ 
  <div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200909/15/31/c0065531_4aaeefa9dd784.jpg" width="426" height="947" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200909/15/31/c0065531_4aaeefa9dd784.jpg');" /></div>9월 23일 다즐링 피아노가 대전 시청에서 두 번째 공연을 가집니다. 지난 5월 20일에 첫 브런치 콘서트를 가졌는데 두 번째에는 인원이 늘었습니다. ㅎㅎㅎ 그래서 이번에 퓨리넬은 차이코프스키 1곡만 연주합니다.<br>원래 계획대로라면 이번에는 라흐마니노프 프렐류드와 차이코프스키 10월 두 곡을 연주했어야 하는데 여름방학 때 인턴을 하게 되면서 연습할 시간이 충분하지 않아 한 곡만 연주하게 되었습니다. 대신 더욱 완성도를 높인 연주를 하려고 노력합니다. ^0^<br>이번 학기에는 월, 화, 수요일 오전에 수업이 없어 연주 전날 연습을 많이 할 수 있고 브런치 콘서트 때문에 수업을 빠지지 않아도 되어서 정말 다행입니다. 지난 5월 공연때는 운영체제 수업을 빼고 공연을 했었으니...ㅎㅎ;;<br>참고로 저 '내가 사랑하는 피아노' 라는 타이틀은 제가 만들었습니다. 빨리 팜플렛을 위한 자료를 보내야 했는데 타이틀은 떠오르지 않고 어떻게든 그럴듯하게 만들어야 했기에 '평범한' 그러나 '마음이 담긴' 그런 뜻으로 만들었지요. 혹시 난 천재? ㅋㅋㅋ<br><br>그리고 벌써 12월 대전 예술의 전당 공연을 위한 곡을 정하고 조금씩 연습하고 있습니다. 다른곳도 아닌 예술의 전당에서 하는 만큼 미리미리 곡을 익혀야죠. 피아노가 아닌, 컴퓨터를 전공한 제가 예술의 전당에서&nbsp;연주하는것은 평생동안 딱 한번이 될지도 모르니절대 실수가 없는, 후회없는 연주를 해야겠습니다.<br><br>그런데 졸업전에 취직은 될까나...<br>지란지교 소프트에 들어가면 소원이 없겠습니다. ㅜㅜ			 ]]> 
		</description>
		<category>MusicLife</category>

		<comments>http://p5ydhcw.egloos.com/5113550#comments</comments>
		<pubDate>Tue, 15 Sep 2009 01:44:22 GMT</pubDate>
		<dc:creator>퓨리넬</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 모 이동통신의 망할 요금제 ]]> </title>
		<link>http://p5ydhcw.egloos.com/5091177</link>
		<guid>http://p5ydhcw.egloos.com/5091177</guid>
		<description>
			<![CDATA[ 
  지난 6월 핸드폰이 싫증 나기도 하고 약간의 문제(정말 아주 약간의 문제 - pc와 통신불가)로 휴대폰을 바꾸었습니다.<br>5월에 새로 나온 모델이라 공짜폰은 안되었기에 XX스폰서 24개월 약정으로 구입하였습니다.<br>4만원 이상이면 할부금액 만원을 할인해준다 하였고 대체로 월 4만원이 넘었기에 그렇게 구입하였는데...<br><br>저만 몰랐던건지 어쩐건지...월 4만원은 기본료+음성, 영상 통신요금 만이 적용되었던 겁니다.<br>데이터통신, 문자 등은 포함이 안되는것이었어요.<br><br>때문에 통신 요금은 4만원이 훨씬 넘었지만 기본료 + 음성, 영상 통신 요금은 3만3천원 정도였기에 할인 금액은 3천원이었습니다.<br>왠지 당한 느낌이지만 제가 몰랐기 때문에 그랬으니 누굴 탓하겠습니까.<br>요금제를 제대로 알고 또 당하는 일이 없도록 해야겠지요.			 ]]> 
		</description>
		<category>일기</category>

		<comments>http://p5ydhcw.egloos.com/5091177#comments</comments>
		<pubDate>Mon, 24 Aug 2009 00:53:37 GMT</pubDate>
		<dc:creator>퓨리넬</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 자바 스크립트로는 세션관리 불가능 ]]> </title>
		<link>http://p5ydhcw.egloos.com/5087037</link>
		<guid>http://p5ydhcw.egloos.com/5087037</guid>
		<description>
			<![CDATA[ 
  <p>자바스크립트의 onclick이벤트를 이용하여 버튼을 클릭하면<br>자바스크립트의 함수에서 세션을 저장하는 방법을 찾아보고 있었는데...<br><br>생각해보니 자바스크립트는 클라이언트 사이드 언어고<br>세션은 서버에 저장되는데 자바스크립트가 세션을 관리할 수 있을리가 없잖아...IIOTL<br><br>왜 이런 간단한걸 이제서야 깨달았는지 원...ㅜㅜ</p>			 ]]> 
		</description>
		<category>프로그래밍수련</category>

		<comments>http://p5ydhcw.egloos.com/5087037#comments</comments>
		<pubDate>Thu, 20 Aug 2009 09:05:00 GMT</pubDate>
		<dc:creator>퓨리넬</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 웹 표준과 크로스 브라우징(1)-자바스크립트에서 form엘리먼트 불러오기 ]]> </title>
		<link>http://p5ydhcw.egloos.com/5085936</link>
		<guid>http://p5ydhcw.egloos.com/5085936</guid>
		<description>
			<![CDATA[ 
  <p>웹 표준과 크로스 브라우징 포스팅은<br>제가 크로스 브라우징을 위한 수련에서 때때로 문제가 생길 때 해결 방안을 올린 겁니다.<br>그러므로 제 개인적인 생각이 많고&nbsp;절대 전문적인 지식이 아닙니다.<br>테스트 환경은 익스플로러 7과 파이어폭스 3.0.12입니다.<br>저는 이 두 개의 브라우저에서 정상적으로 작동하면 OK로 생각하고 있습니다.<br>페이지는 xhtml1.0 Strict로 작업하고 있습니다.<br></p><br><p>xhtml에서 form 엘리먼트의 속성에 name이 폐지되었습니다. <br>정확하게는 xhtml1.0 strict와 xhtml1.1에서 form 엘리먼트의 식별자인 name속성을 사용할 수 없게 되고 (물론 당연히 form 외의 다른 요소들에는 name속성의 사용이 가능합니다.) 대신 id로 식별자를 대신하게 되었습니다.<br>덕분에 javascript 사용에 문제가 생겼습니다.<br></p><br><p><br>html 코드 중에서<br>&lt;body onload="begin()"&gt;<br>...(생략)<br>&lt;form action="./func/inputDB.jsp?control=std" method="post" id="userinput" onsubmit="return checkIt()"&gt;<br>...(생략)<br>&nbsp;&nbsp;&lt;tr&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;th&gt;이름&lt;/th&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;input class="text" type="text" name="stdName" maxlength = "16" /&gt;&lt;/td&gt;<br>&nbsp;&nbsp;&lt;/tr&gt;<br>...(이하생략)<br><br>javascript 코드 중에서 <br>function begin(){<br>document.userinput.stdName.focus();<br>}<br><br></p><br><p>기존의 코드 입니다.<br>body에 onload가 지정되어 페이지가 로드될 때 javascript의 begin() 함수를 실행합니다. begin()함수는 form 안의 이름(stdName)을 입력하는 텍스트박스에 커서가 위치하도록 합니다.<br>그런데 name을 id로 바꾸면서 javascript가 제대로 기능을 못하는 겁니다. 어쩌죠?<br></p><br><p>이 문제는 DOM과 연관이 있는것 같습니다.(아직 DOM script에 대한 지식이 부족해서 추측인 겁니다. 누가 제대로된 지식을 알려주세요 ㅜㅜ)<br>해결 방안은</p><br><pre><code><br>function begin(){<br>  var input = document.getElementById("userinput"); <br>  input.stdName.focus();<br>	}<br></code></pre><br><p>이렇게 하면 됩니다. DOM script 에 대한 것인데,<br>문서의 userinput이라는 id를 가진 엘리먼트를 불러와 input 변수에 할당하고, 이 input 변수에서 stdName이라는 노드에 focus()를 주는 겁니다...라고 생각됩니다.<br>form의 name요소를 id로 바꾸면서 javascript를 이렇게 바꾸어야 했습니다.<br>제가 원래 javascript도 잘 몰라서 그런건지는 몰라도 기존에 쓰이던 코드와는 확실히 달랐습니다.<br>어제 DOM script에 관한 책 일부를 보았기 때문에 DOM script와 관련있는 부분이라고 생각만 하고 있습니다.<br></p><br><code><pre><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;//&lt;![CDATA[<br>&nbsp;&nbsp;&nbsp;function setid()<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;opener.document.userinput.&lt;%=select %&gt;Num.value = "&lt;%=num %&gt;";<br>&nbsp;&nbsp;&nbsp;&nbsp;self.close();<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;function begin(){<br>&nbsp;&nbsp;&nbsp;&nbsp;document.checkForm.id.focus();<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;function checkIt(){<br>&nbsp;&nbsp;&nbsp;&nbsp;if(!document.checkForm.id.value){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("아이디를 입력하지 않으셨습니다.");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.loginForm.id.focus();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;return true;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;//]]&gt;<br>&nbsp;&nbsp;</pre><pre><br>요건 기존의 코드이고</pre><pre><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;//&lt;![CDATA[<br>&nbsp;&nbsp;&nbsp;var inputId = document.getElementById("checkForm");<br>&nbsp;&nbsp;&nbsp;function setid()<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp; var input = opener.document.getElementById("userinput"); <br>&nbsp;&nbsp;&nbsp;&nbsp; input.&lt;%=select %&gt;Num.value = "&lt;%=num %&gt;";<br>&nbsp;&nbsp;&nbsp;&nbsp;self.close();<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;function begin(){<br>&nbsp;&nbsp;&nbsp;&nbsp;inputId.id.focus();<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;function checkIt(){<br>&nbsp;&nbsp;&nbsp;&nbsp;if(!inputId.id.value){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("아이디를 입력하지 않으셨습니다.");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inputId.id.focus();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;return true;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;//]]&gt;<br>		<br><br>이건 수정 후의 코드입니다.<br></pre></code><br><p>이 코드는 아이디 중복 검사를 위해 팝업창을 열고&nbsp;텍스트박스에 아이디가 입력이 되어 있는지(function checkIt()), 텍스트박스에 커서를 위치하기(function begin()), 창을 열었던 페이지의 텍스트박스에 값을 입력하기(function setId()) 세 개의 함수 입니다.<br>수정 전에는 위의 함수들이 제대로 실행되지 않았지만 수정 후에는 익스와 파폭에서 잘 실행됩니다.<br>크로스 브라우징을 구현하려면 html이나 css뿐만 아니라 javascript까지도 신경써야 합니다.(javascript는 옛날부터 문제였지만)<br>정말 쉬운일은 아니네요.<br>다음 번에는 어떤 문제가 닥쳐올 지 궁금해지기까지 합니다.<br></p></code></code><br/><br/>tag : <a href="/tag/크로스브라우징" rel="tag">크로스브라우징</a>,&nbsp;<a href="/tag/자바스크립트" rel="tag">자바스크립트</a>,&nbsp;<a href="/tag/DOM" rel="tag">DOM</a>			 ]]> 
		</description>
		<category>프로그래밍수련</category>
		<category>크로스브라우징</category>
		<category>자바스크립트</category>
		<category>DOM</category>

		<comments>http://p5ydhcw.egloos.com/5085936#comments</comments>
		<pubDate>Wed, 19 Aug 2009 07:48:42 GMT</pubDate>
		<dc:creator>퓨리넬</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 크로스 브라우징으로 가는 길 첫 단계 ]]> </title>
		<link>http://p5ydhcw.egloos.com/5085627</link>
		<guid>http://p5ydhcw.egloos.com/5085627</guid>
		<description>
			<![CDATA[ 
  <p>요즘 웹 표준과 웹 접근성, 그리고 크로스 브라우징에 대해 말이 많습니다.<br>개인적인 생각으로는 익스 6은 가능한 빨리 사라져야 할 구시대의 유물이고 익스든, 파폭이든, 사파리나 오페라든 정상적인 페이지를 출력할 수 있게 되어야 한다고 믿고 있습니다.</p><br><br><p>그러므로 <br>모든 웹 사이트는 웹 표준을 지켜야 한다!!!!<br>웹 표준을 지키지 않는 웹 사이트는 각성하고 웹 표준에 근거하여 만들어야 한다!!!!<br><br>라고 생각하고 있었습니다.<p><br><br><br><p>그런데...<br>직접 해보지 않으면 모른다고 막상 제가 그런 페이지를(그것도 첫 화면 만을) 만들어 보려고 하니 머리가 다 아픕니다.<br>웹 표준 지키는거?<br>그거 자체는 어렵지 않습니다.<br>기존의 웹 표준을 지키지 않고 익스6에 맞춰진 페이지를 만들 때와 방식이 달라지고 제약이 생긴 것일 뿐, 문법이나 만드는 방식이 완전히 달라진것도 아니니까요.<br><br>그런데 크로스 브라우징이 생각보다 어렵습니다.<br><br>ㅅㅂ...웹 표준대로 하면 똑같이 나와야 하는거 아닙니까? 근데 웹 표준대로, xhtml-strict와 css2로 w3c의 validator도 통과했는데 똑같이 보이지 않습니다. 아오~~~</p><br><br><p>일단 크로스 브라우징을 위해 css에서<br><br><code><br>body {<br>margin : 0px;<br>padding : 0px;<br>border : 0px;<br>width : 1003px;<br>background-image : url("./images/visual.jpg");<br>background-repeat : no-repeat;<br>}<br></code><br>이렇게 놓고 시작합니다.<br><br>이렇게 하면 똑같이 나올 줄 알았습니다. 그런데,<br>다음은 메뉴를 위하여 이미지 파일 4개를 넣은 부분입니다.<br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200908/19/31/c0065531_4a8b4ed6161e5.jpg" width="127" height="300" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200908/19/31/c0065531_4a8b4ed6161e5.jpg');" /></div><br><br>ㅅㅂ...이게 뭐임? 왜 이렇게 나오지?<br>마진, 패딩, 보더값이 0인데도 이렇게 다르게 나옵니다. (여기서는 margin-bottom에 1 주었습니다.)<br>원하는 모습으로 나온건 오히려 익스7입니다.<br>파이어폭스에서는 수직 3픽셀 정도의 간격으로 이미지가 떨어져서 나옵니다.<br><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200908/19/31/c0065531_4a8b549ab2a2c.jpg" width="500" height="396" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200908/19/31/c0065531_4a8b549ab2a2c.jpg');" /></div><br><br>이 부분 뿐만이 아니라 다른 이미지들 역시 파폭에서는 3, 4 픽셀정도 간격이 벌어져서 레이아웃을 익스7에 맞추면 파폭에서는 위에서부터 몇 픽셀씩 밀려나가 아래쪽 부분에서는 10 픽셀 이상의 차이가 납니다.<br><br>html페이지와 css 둘 다 w3c의 검사기에 통과했는데 이렇게 다르게 나오는 모습을 보고<br>웹 표준따위...<br>하고 생각하고 있을 무렵,<br>한 블로그에서 해결 방법을 찾았습니다. ㅜ▽ㅜ<br>그것은 css의 body에&nbsp;<br><br>&nbsp;font-size : 0px;<br><br>를 추가 하는 것.<br>폰트 사이즈 때문에 익스와 파폭에서 제각기 그 크기를 계산하느라 약간의 차이가 있었던 것 같습니다.<br>그리하여 결국은<br><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200908/19/31/c0065531_4a8b51e5e6542.jpg" width="500" height="377" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200908/19/31/c0065531_4a8b51e5e6542.jpg');" /></div></p><div style="TEXT-ALIGN: center">&lt; 익스플로러 7 &gt; <div style="TEXT-ALIGN: center"></div><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200908/19/31/c0065531_4a8b51f550363.jpg" width="500" height="396" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200908/19/31/c0065531_4a8b51f550363.jpg');" /></div><div style="TEXT-ALIGN: center">&lt; 파이어폭스 3. 0. 12 &gt;</div><br><br><div style="TEXT-ALIGN: left">여기까지 오는 데 무려 3일이 걸렸습니다.<br>웹 표준을 지키는것, 그리고 크로스 브라우징을 구현하는 것. 생각보다 어려운 일이었습니다.<br>w3c의 검사기를 통과했는데도 익스 7과 파폭에서 똑같이 나오지 않았고, 이런 식이면 익스 6에서는 또 어떨지, 이렇게 간단한 하나의 페이지도 똑같이 나오게 하려면 여러 장치가 필요한데 복잡한 포털 사이트, 하다못해 개인 블로그 에서도 크로스 브라우징을 구현하려면 쉽지 않으리라 생각됩니다.<br>익스플로러 8은 가능한 웹 표준에 맞추어 만들어졌다고 하니, 앞으로 윈도우즈7의 보급으로 익스 8이 보편화 되면 크로스 브라우징이 조금은 쉬워지지 않을까 생각을....<br>할 수가 없습니다. 익스 6은 생각보다 오래오래 갈 테니까요. ㅜㅜ<br><br>** 추가 **<br>자바스크립트도 (당연하지만) 익스와 파폭이 해석하는게 다르네요. <br>xhtml에 이어 자바스크립트 까지 호환되게 만들어야 하다니...이건 제가 자바 스크립트를 잘 몰라서 생기는 문제이기도 하네요.<br>끄아...크로스 브라우징으로 가는 길은 멀고도 험합니다.</div></div><br/><br/>tag : <a href="/tag/웹표준" rel="tag">웹표준</a>,&nbsp;<a href="/tag/크로스브라우징" rel="tag">크로스브라우징</a>			 ]]> 
		</description>
		<category>웹표준</category>
		<category>크로스브라우징</category>

		<comments>http://p5ydhcw.egloos.com/5085627#comments</comments>
		<pubDate>Wed, 19 Aug 2009 01:20:45 GMT</pubDate>
		<dc:creator>퓨리넬</dc:creator>
	</item>
	<item>
		<title><![CDATA[ Dazzling Piano 브런치콘서트 공연 사진들 ]]> </title>
		<link>http://p5ydhcw.egloos.com/4995277</link>
		<guid>http://p5ydhcw.egloos.com/4995277</guid>
		<description>
			<![CDATA[ 
  <p>지난 5월 20일 대전 시청 하늘마당에서 Dazzling Piano의 브런치 콘서트가 있었습니다.<br><br>사진들인데 저는 딱 한장만 나왔네요 ㅜㅜ<br><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200906/09/31/c0065531_4a2e41b2ed4cd.jpg" width="500" height="333.333333333" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200906/09/31/c0065531_4a2e41b2ed4cd.jpg');" /></div><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds12.egloos.com/pds/200906/09/31/c0065531_4a2e419c28a85.jpg" width="500" height="333.59375" onclick="Control.Modal.openDialog(this, event, 'http://pds12.egloos.com/pds/200906/09/31/c0065531_4a2e419c28a85.jpg');" /></div></p>첫 번째로 은현이형이 바흐와 쇼팽을 치셨습니다.<br>우리 Dazzling Piano의 회장인 정은현입니다.<br>능력좋은 형이죠 ^^<br><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200906/09/31/c0065531_4a2e41e52ea80.jpg" width="500" height="333.59375" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200906/09/31/c0065531_4a2e41e52ea80.jpg');" /></div>두 분이서 사회를 보셨습니다.<br>회장인 은현형과 충대 학생인 지선양입니다.<br><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds12.egloos.com/pds/200906/09/31/c0065531_4a2e426a99e7a.jpg" width="500" height="333.59375" onclick="Control.Modal.openDialog(this, event, 'http://pds12.egloos.com/pds/200906/09/31/c0065531_4a2e426a99e7a.jpg');" /></div><br>두 번째로 베토벤 발트슈타인 1악장을 치신 영수형입니다.<br>예전에는 종종 같이 연습하기 했었는데 요즘은 만나기 힘든 형입니다. ;ㅇ;<br><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200906/09/31/c0065531_4a2e42eea2207.jpg" width="500" height="333.59375" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200906/09/31/c0065531_4a2e42eea2207.jpg');" /></div>퓨리넬입니다.<br>저는 이 한장뿐...ㅜㅜ<br>Dazzling Piano는 저 외에는 피아노를 전공하시고 저만 <span class="pops" id="POPS3539_170">컴퓨터</span> 공학입니다.<br>저는 라흐마니노프 녹턴 3번, 드뷔시 꿈을 쳤습니다.(피아노곡을 '연주'한게 아니라 피아노를 '쳤'습니다.ㅡ,.ㅡ;;)<br><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds12.egloos.com/pds/200906/09/31/c0065531_4a2e436977f6f.jpg" width="500" height="333.59375" onclick="Control.Modal.openDialog(this, event, 'http://pds12.egloos.com/pds/200906/09/31/c0065531_4a2e436977f6f.jpg');" /></div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200906/09/31/c0065531_4a2e43a7b66fe.jpg" width="500" height="333.59375" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200906/09/31/c0065531_4a2e43a7b66fe.jpg');" /></div>문일형님입니다.<br>Dazzling Piano의 고문(?)인 박문일 선생님 입니다.<br>지금은 두 학교에 출강하는 정말 순수한 남자입니다.<br>아래쪽 흑백 사진은 <span class="pops" id="POPS13493_52">공연</span> 전 리허설때 찍은 사진입니다.<br>쇼팽 왈츠와 <span style="COLOR: #6d2262"><strong>Variations Brillantes Op.12 B Flat Major</strong></span><span style="COLOR: #000000">&nbsp;를 치셨습니다.</span><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds12.egloos.com/pds/200906/09/31/c0065531_4a2e43fb5588f.jpg" width="500" height="333.59375" onclick="Control.Modal.openDialog(this, event, 'http://pds12.egloos.com/pds/200906/09/31/c0065531_4a2e43fb5588f.jpg');" /></div><br>마지막으로 허미정 누나입니다.<br>문일형님과 2 piano로 피아졸라의 리베르탱고를 연주하셨습니다.<br><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds13.egloos.com/pds/200906/09/31/c0065531_4a2e448262dbe.jpg" width="500" height="333.59375" onclick="Control.Modal.openDialog(this, event, 'http://pds13.egloos.com/pds/200906/09/31/c0065531_4a2e448262dbe.jpg');" /></div>연주가 모두 끝나고 인사하는 모습 입니다.<br><br>Dazzling Piano의 다음 브런치콘서트 공연은 9월 말에 있습니다.<br>그 때를 대비해서 지금부터 연습해야겠습니다. ^^			 ]]> 
		</description>
		<category>MusicLife</category>

		<comments>http://p5ydhcw.egloos.com/4995277#comments</comments>
		<pubDate>Tue, 09 Jun 2009 11:17:41 GMT</pubDate>
		<dc:creator>퓨리넬</dc:creator>
	</item>
	<item>
		<title><![CDATA[ Enhanced second chance algorithm을 C로 간단히 구현하기 ]]> </title>
		<link>http://p5ydhcw.egloos.com/4994575</link>
		<guid>http://p5ydhcw.egloos.com/4994575</guid>
		<description>
			<![CDATA[ 
  <p><a href="http://pds15.egloos.com/pds/200906/09/31/OS_HW02.pdf">OS_HW02.pdf</a><br><br>운영체제 과목에서 Enhanced second chance algorithm을 C로 간단하게 구현하는 과제가 나왔습니다.<br>어제 시험을 봤는데 아직 성적은 안나왔지만 이제와서 이거 보고 제출할 학생은 없겠지요??<br><br>Enhanced second chance algorithm 은 1개의 reference bit와 modify bit를 사용합니다.<br>페이지가 읽히면 ref는 1, 수정까지 이루어지면 mod는 1이 됩니다.<br>page fault가 일어나면 이 비트들이 0, 0 인 것을 먼저 찾아 그 페이지를 replace합니다.<br>없으면 최근에 액세스는 없었지만 수정이 있었던 0, 1 인 페이지를 replace합니다.<br>비트가 0, 1인 페이지를 찾을 때 포인터가 이동하면서 reference bit를 0으로 수정합니다.<br>modify bit는 그대로 둡니다.<br>여기까지 진행되면 반드시 비트가 0, 0이나 0, 1인 페이지들이 있습니다.<br>포인터에 가장 먼저 검색되는 페이지가 replace 됩니다.<br><br>포인터는 page replace가 일어났던 다음 페이지를 가리키고 전체 페이지는 circular queue로 이루어집니다.<br><br>자세한건 PDF파일에 있습니다.<br><br><a href="http://pds13.egloos.com/pds/200906/09/31/os_2.c">os_2.c</a><br>소스코드를 직접 올리는것은 별로 좋은 생각이 아니지만 그렇다고 별 숨길것도 없는데 뭐하랴~싶어 올립니다.<br><span style="COLOR: #c0c0c0">이거 해피레포트에 올리면 1학기 때 은근 팔릴것 같기도 한데...;;</span></p><br /><br /><p>헤더는 stdio.h와 stdlib.h를 include합니다.<br>#define MAX_FRAME 5 // 메모리의 크기입니다. 동적할당 이런거 필요없고 과제에서는 5로 정해졌습니다.<br></p><p>int proc[16]; // 프로세스의 이미지 입니다. 사실 여기선 별로 의미가 없습니다.<br>int victim; // 포인터의 현재 위치를 저장합니다.&nbsp;<br>int page_Num; // 읽은 페이지 번호를 저장합니다.<br><br>typedef struct{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int data; // proc의 내용을 저장합니다. 사실 이&nbsp;과제에서는 페이지 번호를 저장해도 됩니다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char bits; // 0 : (0, 0), 1 : (0, 1), 2 : (1, 0), 3 : (1, 1) // int로 하지 않고 char 변수 1개로 ref bit와 mod bit로 사용합니다.<br>}Page;<br>Page mem[MAX_FRAME]; // 메모리<br><br>이런 변수들을 전역변수로 사용했습니다. <br>왜 전역변수로 만들었냐면...<br>귀찮으니까요. 스레드를 돌리나 멀티프로세싱을 하나...<br><br>함수는 총 9개입니다.<br><br>void init();<br>int exe_process(char *in, int modify);<br>int is_modify(char *in);<br>int search(int x, int modify);<br>int change_num(char *in, int modify);<br>void page_fault(int proc, int modify);<br>void write_result(FILE *outfile, int is_pf, int modify);<br>int find_00(int proc, int temp, char m);<br>int find_01(int proc, int temp, char m);<br><br>짧은 영어 때문에 변수명도, 함수명도 네이밍센스가 너무 떨어지네요. ㅡㅡ;;<br><span style="COLOR: #dcdcdc">x는 뭐고 temp는 뭐고&nbsp; m은 또 뭐람.</span><br><br>main()함수입니다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; init();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(fscanf(infile, "%s", read_page) != EOF)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; modify = is_modify(read_page);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; is_pf = exe_process(read_page, modify);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; write_result(outfile, is_pf, modify);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!is_pf) // Page fault가 일어나 페이지 교체가 이루어졌을 경우 포인터를 1 증가시킨다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; victim = ++victim % MAX_FRAME; // Circular 를 위한 연산<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>init()를 실행하고 while문에서 EOF를 만날 때까지 RefString.txt에 저장된 문자열을 읽습니다.<br>fscanf를 사용하면 공백문자까지 읽기 때문에 read_page변수의 길이는 공백까지 고려해야 합니다.<br><br>init()에서는 proc와 mem을 초기화 합니다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i = 0; i &lt; MAX_FRAME; i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mem[i].data = -1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mem[i].bits = 0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i = 0; i &lt; 16; i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proc[i] = i;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>is_modify()에서는 페이지가 수정이 이루어지는지 여부를 저장합니다.<br>RefString.txt에서는 페이지를 읽을 때 수정이 이루어지면 번호 앞에 'm'이 붙습니다.<br>읽은 문자열의 0번 인덱스에 'm'이 저장되어 있으면 1을 리턴하고 없으면 0을 리턴합니다.<br><br>exe_process()함수 에서는 읽은 페이지 번호를 int로 바꾸고 <br>메모리를 검사하여 page fault인 경우 그에 대한 replace를 실행합니다.<br>그리고 page fault 여부를 리턴합니다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int is_pf; // 0 : Page Fault, 1 : Find it<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; page_Num = atoi(in +&nbsp;modify); // RefString에 저장된 엑세스 하는 페이지 번호를 읽어 저장한다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; is_pf = search(proc[page_Num], modify); // 페이지 번호로 프로세스의 데이타를 보내어 메모리에 있는지 검색한다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!is_pf) // 만약 검색이 안될 경우(page fault일 경우) 실행된다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; page_fault(proc[page_Num], modify);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return is_pf;<br><br>int형 변수 page_Num에 문자열을 int로 변환하여 저장합니다.<br>이 때, 읽은 페이지가&nbsp;modify일 경우 문자열의&nbsp;0번에는 'm'이 저장되어 있으므로 1번 인덱스를 atoi함수에 보내야 합니다.<br>modify변수가 modify일 때는 1, 아닐 때는 0 이므로&nbsp;<br>atoi(in + modify)로 변환할 수 있습니다.<br><br>search() 함수는 mem배열에(할당된 메모리에) 데이터가 있는지 검사합니다.<br>무한 while문을 돌리고 배열을 한 번 검사합니다. 만약 데이터가 저장되어 있다면 1을 리턴하고,<br>없으면 배열을 한 바퀴 돈 다음 루프를 종료하고 0을 리턴합니다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int temp = victim;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char m = (char)modify;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(mem[temp].data == proc) // 만약 메모리에 일치하는 데이터가 있을 경우<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mem[temp].bits = 2 + m; // 사용되었으므로 reference bit를 1, 0 modify라면 1, 1로 설정한다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp = ++temp % MAX_FRAME; // Circular 를 위한 연산<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( victim == temp ) // victim이 처음 값과 같을 경우 roof를 탈출한다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br><br>search()함수에서 page fault라면 0 이므로 if(!is_pf)로 page fault가 일어날 경우 page_fault()함수를 호출합니다.<br>그리고 page fault여부를 리턴합니다.<br><br>page_fault()함수는<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int temp = victim;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char m = (char)modify;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(find_00(proc, temp, m)) // Ref, mod bit가 0, 0인 페이지를 찾고 있으면 페이지를 교체한다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(find_01(proc, temp, m)) // 0, 0이 없으면 0, 1인 페이지를 찾고 있으면 페이지를 교체한다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(find_00(proc, temp, m)) // 위와 동일하다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(find_01(proc, temp, m))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>입니다.<br>modify가 int였다 char였다 casting이 되는데 이건 순전히 실수 입니다.<br>메모리 아낄 수 있는것도 아닌데 Page구조체를 만들 때 bits부분을 char로 하였습니다.<br>그러면서 main()함수에서 modify 변수를 int로 만들었는데 나중에 '실수다' 했지만<br>과제 제출 마감 때문에 걍 이대로 만들었습니다.<br>그리고 find_00함수 인자로 temp를 보낼 필요는 없습니다. 어차피 victim은 전역변수니깐요. <span style="COLOR: #dcdcdc">예 대충만들어서 그렇습니다.</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(mem[victim].bits == 1) // 이 함수에서는 0, 1 bit를 찾는다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mem[victim].data = proc;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mem[victim].bits = 2 + m;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mem[victim].bits = mem[victim].bits &amp; 1;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; victim = ++victim % MAX_FRAME;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( victim == temp)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br>find_01함수입니다.<br>find_00은 위와 같지만 mem[victim].bits = mem[victim].bits &amp; 1; 부분이 억고 if에서 0을 찾습니다.<br><br>다음엔 <span class="pops" id="POPS3539_909">컴퓨터</span> 언어론 시간에 실습과제로 만든걸 올려볼까 합니다.<br>초간단 스크립트 언어인데 무려 이름도 있습니다.<br>Simple 2009!! 라는 언어 ㅡ,.ㅡ;;; 입니다.<br>2008년도에는 정말 제대로 된 언어였습니다. 2009년에 와서 초 간단으로 바뀌었습니다.<br>그래서 Simple 2009입니다.<br><br>이런 소소한 <span class="pops" id="POPS41971_501">프로그래밍</span> 과제가 나오면 참 재미있는데 router를 만들라거나 ATM 기능을 구현하라거나 하는 텀프로젝트는 정말 싫단 말이죠(...)</p>			 ]]> 
		</description>
		<category>프로그래밍수련</category>

		<comments>http://p5ydhcw.egloos.com/4994575#comments</comments>
		<pubDate>Tue, 09 Jun 2009 01:14:29 GMT</pubDate>
		<dc:creator>퓨리넬</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 메일을 정리하다. ]]> </title>
		<link>http://p5ydhcw.egloos.com/4981477</link>
		<guid>http://p5ydhcw.egloos.com/4981477</guid>
		<description>
			<![CDATA[ 
  제가 쓰는 메일은 한메일과 네이버 계정, 두 개를 사용하고 있습니다.<br><br>한메일은 다음이 한메일이던 시절 계정을 만들었습니다.<br>벌써 10년이 훌쩍 넘었습니다.<br>10년이면 강산이 변한다더니...인터넷이나 사회나 정말 많이 변했습니다.<br>저 자신도 나이가 많이 들었..큭;;<br><br>그리고 네이버는 언제 만들었는지 기억이 안나네요.<br>경찰서에 있는동안 만들지 않았던가 생각해 봅니다.<br><br>하여간 이 계정들을 오~~랬동안 제대로 신경쓰지 않았습니다.<br>가끔씩 '읽지 않은 메일 삭제'로 스팸들을 삭제하였습니다.<br><br>주로 실습 자료들을 옮길 때, 인터넷 주문관련, 고지서 용으로 사용하고 있었습니다.<br>그런데 이제 취업을 앞두고 메일계정을 관리해야겠다는 생각이 들었습니다.<br><br>쓸데없는 메일은&nbsp;지우고, 스팸등록을 하고 메일함을 만들어 고지서, 거래내역서 등을 분류하였습니다.<br><br>마치 오래된 방을 청소한 느낌입니다.<br>이제는 정말 메일계정 관리좀 해야겠어요.<br>			 ]]> 
		</description>
		<category>일기</category>

		<comments>http://p5ydhcw.egloos.com/4981477#comments</comments>
		<pubDate>Mon, 01 Jun 2009 01:40:49 GMT</pubDate>
		<dc:creator>퓨리넬</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 5월 20일 대전시청 브런치 콘서트 ]]> </title>
		<link>http://p5ydhcw.egloos.com/4964196</link>
		<guid>http://p5ydhcw.egloos.com/4964196</guid>
		<description>
			<![CDATA[ 
  대전 시청에서는 매주 수요일 오전 11시 브런치 콘서트가 열리고 있습니다.<br><br>시청 20층의&nbsp;카페라운지를 공연이 가능한 장소로 꾸며 시민들이 무료로 문화 생활을 즐길 수 있도록 하는 곳입니다.<br><br>올해 2월 처음 공연이 시작되었습니다.<br><br>이 공연을 정은현 이라는 우리 다즐링 피아노의 회장님이 기획을 하시는데 1년분을 혼자서 할 수 없기에 멘토기획에서 22회, 회장님이 25회정도를 나누어서 격주로 나누어 공연을 기획하고 수요일마다 공연이 열립니다.<br>그리고 팜플렛이나 포스터 등은 멘토기획에서 제작한다고 합니다.<br><br>잡담을 나누다 들은 이야기라 기억이 정확한지 모르겠습니다.<br><br>여튼 20일은 우리 Dazzling Piano의 공연이 있었습니다.<br><br>그런데 멘토기획에서 사진은 찍어주는데 동영상은 없다고 합니다.<br><br>그래서 친구에게 부탁해서 저만 동영상으로 찍었습니다.<br>제가 제일 못했는데 말이죠. ㅋㅋㅋㅋ<br><br><p><object id="skplayer" name="skplayer" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9.0.115.00" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="480" height="412"><param name="_cx" value="5080"><param name="_cy" value="5080"><param name="FlashVars" value=""><param name="Movie" value="http://dbi.video.cyworld.com/v.sk/movie/0|207551830/20090520160500782422351001"><param name="Src" value="http://dbi.video.cyworld.com/v.sk/movie/0|207551830/20090520160500782422351001"><param name="WMode" value="Transparent"><param name="Play" value="-1"><param name="Loop" value="-1"><param name="Quality" value="High"><param name="SAlign" value=""><param name="Menu" value="-1"><param name="Base" value=""><param name="AllowScriptAccess" value=""><param name="Scale" value="ShowAll"><param name="DeviceFont" value="0"><param name="EmbedMovie" value="0"><param name="BGColor" value=""><param name="SWRemote" value=""><param name="MovieData" value=""><param name="SeamlessTabbing" value="1"><param name="Profile" value="0"><param name="ProfileAddress" value=""><param name="ProfilePort" value="0"><param name="AllowNetworking" value="all"><param name="AllowFullScreen" value="false"><embed src="http://dbi.video.cyworld.com/v.sk/movie/0|207551830/20090520160500782422351001" wmode="transparent" allowscriptaccess="always" allowfullscreen="true" name="skplayer" width="480" height="412" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></object></p><p>&nbsp;</p><p><object id="skplayer" name="skplayer" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9.0.115.00" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="480" height="412"><param name="_cx" value="5080"><param name="_cy" value="5080"><param name="FlashVars" value=""><param name="Movie" value="http://dbi.video.cyworld.com/v.sk/movie/0|207551971/20090520160500782426831001"><param name="Src" value="http://dbi.video.cyworld.com/v.sk/movie/0|207551971/20090520160500782426831001"><param name="WMode" value="Transparent"><param name="Play" value="-1"><param name="Loop" value="-1"><param name="Quality" value="High"><param name="SAlign" value=""><param name="Menu" value="-1"><param name="Base" value=""><param name="AllowScriptAccess" value=""><param name="Scale" value="ShowAll"><param name="DeviceFont" value="0"><param name="EmbedMovie" value="0"><param name="BGColor" value=""><param name="SWRemote" value=""><param name="MovieData" value=""><param name="SeamlessTabbing" value="1"><param name="Profile" value="0"><param name="ProfileAddress" value=""><param name="ProfilePort" value="0"><param name="AllowNetworking" value="all"><param name="AllowFullScreen" value="false"><embed src="http://dbi.video.cyworld.com/v.sk/movie/0|207551971/20090520160500782426831001" wmode="transparent" allowscriptaccess="always" allowfullscreen="true" name="skplayer" width="480" height="412" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></object></p><p>&nbsp;<br>카메라가 MJPEG으로 동영상이 저장되 1GB로는 녹화 가능 시간이 20분이 채 안되서 저만 찍었습니다.<br>다른 분들은 뭐...다른 연주 기회가 있으니...ㅎㅎㅎ<br><br>Dazzling Piano에서는 저만 비 전공입니다. 저는 컴퓨터 공학과이니까요.<br>피아노는 어디까지나 취미로 즐기는데 어쩌다 보니 여기까지 오게 되었습니다.<br><br>연주회라면 피아노 사랑 카페의 정모연주회가 규모는 더 큽니다.<br>한번 모이면 150명이 넘고, 제대로 된 홀에서 연주하지요.<br>하지만 여기 대전 시청 하늘마당에서 하는 공연은&nbsp;또 다르지요.<br><br>많이 긴장되었고(연습이 충분하지 못해서) 또 정말 즐거웠습니다.<br><br>끝나고 꽃도 받았어요!<br>생에 처음으로 축하&nbsp;꽃을 받았습니다.<br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200905/22/31/c0065531_4a1581fc894dd.jpg" width="400" height="1066" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200905/22/31/c0065531_4a1581fc894dd.jpg');" /></div></p>아마 잊지 못할 것 같습니다.			 ]]> 
		</description>
		<category>MusicLife</category>

		<comments>http://p5ydhcw.egloos.com/4964196#comments</comments>
		<pubDate>Thu, 21 May 2009 16:32:31 GMT</pubDate>
		<dc:creator>퓨리넬</dc:creator>
	</item>
</channel>
</rss>
