<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-291727137054757914</id><updated>2011-11-28T08:22:23.461+09:00</updated><category term='Unix'/><category term='CLI'/><category term='continuous integration'/><category term='apple'/><category term='VirtualBox'/><category term='free'/><category term='tenso'/><category term='CI'/><category term='oracle instance client'/><category term='object-oriented terminology'/><category term='xlc'/><category term='__VA_ARGS__'/><category term='사진'/><category term='fork'/><category term='c'/><category term='Steve Jobs'/><category term='취미'/><category term='malloc'/><category term='DB2'/><category term='multi-thread'/><category term='일본 배송 대행'/><category term='hostid'/><category term='Ubuntu'/><category term='variable-arguments'/><category term='필름'/><category term='hsm'/><category term='AIX'/><category term='객체지향 용어'/><category term='memory leak'/><title type='text'>programming experiences &amp; thinking, etc</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ieggstory.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ieggstory.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>에그</name><uri>http://www.blogger.com/profile/01016826165526528783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-291727137054757914.post-7759157167574255054</id><published>2010-05-27T17:45:00.001+09:00</published><updated>2010-05-27T17:45:56.163+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='일본 배송 대행'/><category scheme='http://www.blogger.com/atom/ns#' term='tenso'/><title type='text'>일본 온라인 구매 물품의 국내 배송 대행 서비스</title><content type='html'>http://www.tenso.com/kr/&lt;br /&gt;&lt;br /&gt;개념은 간단하다.&lt;br /&gt;저 사이트에 가입하면 일본내 배송 주소(1)가 생긴다.&lt;br /&gt;일본 온라인 쇼핑몰에서 물품을 구입하고 배송지 주소를 위의 (1)으로 지정한다.&lt;br /&gt;물품이 위의 (1)로 도착이하면 tenso 에서 가입자에게 배송비를 알려준다. 그 비용을 결제하면 국내 주소로 배송을 해준다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/291727137054757914-7759157167574255054?l=ieggstory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ieggstory.blogspot.com/feeds/7759157167574255054/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=291727137054757914&amp;postID=7759157167574255054&amp;isPopup=true' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/7759157167574255054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/7759157167574255054'/><link rel='alternate' type='text/html' href='http://ieggstory.blogspot.com/2010/05/blog-post_27.html' title='일본 온라인 구매 물품의 국내 배송 대행 서비스'/><author><name>에그</name><uri>http://www.blogger.com/profile/01016826165526528783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-291727137054757914.post-6162645718900551692</id><published>2010-05-26T16:38:00.002+09:00</published><updated>2010-05-26T16:40:17.675+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CI'/><category scheme='http://www.blogger.com/atom/ns#' term='continuous integration'/><title type='text'>Continuous integration 툴 목록</title><content type='html'>참고 : &lt;a href="http://www.ibm.com/developerworks/kr/library/j-ap09056/index.html"&gt;http://www.ibm.com/developerworks/kr/library/j-ap09056/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;cruisecontrol/bamboo/hudson/teamcity/funtbuild&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/291727137054757914-6162645718900551692?l=ieggstory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ieggstory.blogspot.com/feeds/6162645718900551692/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=291727137054757914&amp;postID=6162645718900551692&amp;isPopup=true' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/6162645718900551692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/6162645718900551692'/><link rel='alternate' type='text/html' href='http://ieggstory.blogspot.com/2010/05/continuous-integration.html' title='Continuous integration 툴 목록'/><author><name>에그</name><uri>http://www.blogger.com/profile/01016826165526528783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-291727137054757914.post-8680666784671852487</id><published>2010-05-23T01:38:00.002+09:00</published><updated>2010-05-26T16:41:05.394+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Steve Jobs'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>애플의 모토?, 스티브 잡스의 모토?</title><content type='html'>'해적이 되자'&lt;br /&gt;'여행은 그 자체로 보상이다'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/291727137054757914-8680666784671852487?l=ieggstory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ieggstory.blogspot.com/feeds/8680666784671852487/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=291727137054757914&amp;postID=8680666784671852487&amp;isPopup=true' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/8680666784671852487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/8680666784671852487'/><link rel='alternate' type='text/html' href='http://ieggstory.blogspot.com/2010/05/blog-post.html' title='애플의 모토?, 스티브 잡스의 모토?'/><author><name>에그</name><uri>http://www.blogger.com/profile/01016826165526528783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-291727137054757914.post-6710812996578608918</id><published>2010-04-13T20:20:00.000+09:00</published><updated>2010-04-13T20:20:29.749+09:00</updated><title type='text'>Make Gantt Chart with Excel</title><content type='html'>&lt;object height="385" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/CW_wGSFavTc&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/CW_wGSFavTc&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/291727137054757914-6710812996578608918?l=ieggstory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ieggstory.blogspot.com/feeds/6710812996578608918/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=291727137054757914&amp;postID=6710812996578608918&amp;isPopup=true' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/6710812996578608918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/6710812996578608918'/><link rel='alternate' type='text/html' href='http://ieggstory.blogspot.com/2010/04/make-gantt-chart-with-excel.html' title='Make Gantt Chart with Excel'/><author><name>에그</name><uri>http://www.blogger.com/profile/01016826165526528783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-291727137054757914.post-4973205623410048769</id><published>2008-07-03T14:07:00.018+09:00</published><updated>2010-02-08T16:38:25.587+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='필름'/><category scheme='http://www.blogger.com/atom/ns#' term='사진'/><category scheme='http://www.blogger.com/atom/ns#' term='취미'/><title type='text'>필름 현상 스캔 가격 비교</title><content type='html'>* 사진놀이터&lt;br /&gt;  - &lt;a href='http://fotomaru.com/bbs/board.php?bo_table=notice&amp;wr_id=4'&gt;가격표&lt;/a&gt;&lt;br /&gt;  - 인천&lt;br /&gt;&lt;br /&gt;* 포토*마루 &lt;br /&gt;  - &lt;a href='http://fotomaru.com/bbs/board.php?bo_table=notice&amp;wr_id=4'&gt;가격표&lt;/a&gt;&lt;br /&gt;  - 충무로&lt;br /&gt;&lt;br /&gt;* 이마트 1 hour photo&lt;br /&gt;  - 1000원 : 네가 현상&lt;br /&gt;&lt;br /&gt;* 코스트코 구내 현상소&lt;br /&gt;  - 1500원 : 네가 필름 현상 + 스캔, CD 담아줌&lt;br /&gt;  - 390원 : 네가 현상&lt;br /&gt;  - 코스트코 멤버쉽 가입 필요(년회비 35,000원)&lt;br /&gt;  - 전국 코스트코 모두 동일, 1 시간 서비스&lt;br /&gt;&lt;br /&gt;* 로커클럽 구내 현상소 - 화목포토&lt;br /&gt;  - 2000원, 3000원(고용량) : 네가 필름 현상 + 스캔&lt;br /&gt;  - 6000원, 7000원(고용량) : 슬라이드 필름 현상 + 스캔&lt;br /&gt;  - 5000원, 6000원(고용량) : 흑백&lt;br /&gt;  - 부산, 노리츠 장비&lt;br /&gt;  - &lt;a href="http://rokkorclub.net/hwamok/"&gt;http://rokkorclub.net/hwamok/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;* 흑포&lt;br /&gt;  - 네가칼라(1000원),네가흑백(2500원),슬라이드(2500원)&lt;br /&gt;  - http://www.phototope.co.kr/ (주의: 홈페이지 google 경고 사이트임,감염됨 사이트로 분류됨)&lt;br /&gt;  - 가격표: &lt;a href="http://www.phototope.co.kr/dongari/money.asp"&gt;http://www.phototope.co.kr/dongari/money.asp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;* 포클 구내현상소 - 큐픽&lt;br /&gt;  - 1500원(현상), 3000원(스캔), 4000원(현상+스캔) : 네가 필름 36 exp&lt;br /&gt;  - 3000원(현상), 5000원(스캔), 1000원(컷당 스캔) : 슬라이드 필름 36 exp&lt;br /&gt;  - 3000원(현상), 3000원(스캔), 8000원(대용량 스캔) : 흑백 필름 36 exp&lt;br /&gt;  - 서울 충무로 위치&lt;br /&gt;  - &lt;a href="http://www.voigtclub.com/cufic/"&gt;http://www.voigtclub.com/cufic/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;* e-현상소&lt;br /&gt;  - 1000원(현상) : 네가 필름&lt;br /&gt;  - 서울 충무로&lt;br /&gt;  - &lt;a href="http://www.e-photo.or.kr/"&gt;http://www.e-photo.or.kr/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;* 포토피아&lt;br /&gt;  - 1500원(현상), 2500원(스캔/컷당/용량별 다양): 네가 필름&lt;br /&gt;  - 3200원(현상), : 슬라이드 필름&lt;br /&gt;  - 2500원(현상), : 흑백&lt;br /&gt;  - &lt;a href="http://www.photopia.co.kr/"&gt;http://www.photopia.co.kr/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;* 종로 스코피&lt;br /&gt;  - 3롤부터 롤당 2000원(현상 + 스캔)&lt;br /&gt;  - 고급 스캔은 3롤부터 롤당 3000원(현상 + 스캔)&lt;br /&gt;  - 종각역 6번 출구에서 쭉 가다가 sk 건물 지하 1층 skopi&lt;br /&gt;  - 노리츠 장비&lt;br /&gt;&lt;br /&gt;* 홈플러스 구내 FDI&lt;br /&gt;  - 500원 : 네가 현상&lt;br /&gt;&lt;br /&gt;* 타임포토&lt;br /&gt;  - 1500원(네가 현상), 3200원(포지 현상), 2000원(흑백)&lt;br /&gt;  - &lt;a href="http://timephoto.co.kr/"&gt;http://timephoto.co.kr/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/291727137054757914-4973205623410048769?l=ieggstory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ieggstory.blogspot.com/feeds/4973205623410048769/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=291727137054757914&amp;postID=4973205623410048769&amp;isPopup=true' title='1개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/4973205623410048769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/4973205623410048769'/><link rel='alternate' type='text/html' href='http://ieggstory.blogspot.com/2008/07/blog-post.html' title='필름 현상 스캔 가격 비교'/><author><name>에그</name><uri>http://www.blogger.com/profile/01016826165526528783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-291727137054757914.post-4451859707879566736</id><published>2008-05-22T09:28:00.003+09:00</published><updated>2010-03-22T13:55:11.268+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Ubuntu 8.04 설치 후 euc-kr 셋팅</title><content type='html'>$ sudo locale-gen ko_KR.EUC-KR&lt;br /&gt;&lt;br /&gt;$ sudo apt-get install convmv&lt;br /&gt;&lt;br /&gt;reboot&lt;br /&gt;&lt;br /&gt;login session에서 언어 선택을 EUC-KR 로 선택하고 기본값으로 설정한다.&lt;br /&gt;&lt;br /&gt;로그인후 터미널을 연다.&lt;br /&gt;&lt;br /&gt;$ convmv -f utf-8 -t euc-kr -r .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/291727137054757914-4451859707879566736?l=ieggstory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ieggstory.blogspot.com/feeds/4451859707879566736/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=291727137054757914&amp;postID=4451859707879566736&amp;isPopup=true' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/4451859707879566736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/4451859707879566736'/><link rel='alternate' type='text/html' href='http://ieggstory.blogspot.com/2008/05/ubuntu-804-euc-kr.html' title='Ubuntu 8.04 설치 후 euc-kr 셋팅'/><author><name>에그</name><uri>http://www.blogger.com/profile/01016826165526528783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-291727137054757914.post-5776511848361657138</id><published>2008-04-28T11:51:00.005+09:00</published><updated>2010-03-22T13:55:37.576+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VirtualBox'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>VirtualBox에서 Ubuntu 8.04 해상도 높이기</title><content type='html'>/etc/X11/xorg.conf 파일을 열어 다음의 부분을 찾아&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Section "Device"&lt;br /&gt;    Identifier "Configured Video Device"&lt;br /&gt;EndSection&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;부분을 찾아 다음 처럼 수정한다.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Section "Device"&lt;br /&gt;    Identifier "Configured Video Device"&lt;br /&gt;    Driver     "vboxvideo"&lt;br /&gt;EndSection&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;수정 완료 후 VirtualBox 윈도우의 크기를 원하는 사이즈로 변경한 후&lt;br /&gt;Ubuntu 상에서 log-out을 선택한다. 잠시 후 로그인 창이 나타나면서&lt;br /&gt;해상도가 자동으로 변경될 것이다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/291727137054757914-5776511848361657138?l=ieggstory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ieggstory.blogspot.com/feeds/5776511848361657138/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=291727137054757914&amp;postID=5776511848361657138&amp;isPopup=true' title='1개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/5776511848361657138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/5776511848361657138'/><link rel='alternate' type='text/html' href='http://ieggstory.blogspot.com/2008/04/virtualbox-ubuntu-804.html' title='VirtualBox에서 Ubuntu 8.04 해상도 높이기'/><author><name>에그</name><uri>http://www.blogger.com/profile/01016826165526528783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-291727137054757914.post-6654018703266947777</id><published>2008-04-14T16:45:00.003+09:00</published><updated>2008-04-14T17:12:24.096+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='malloc'/><category scheme='http://www.blogger.com/atom/ns#' term='free'/><category scheme='http://www.blogger.com/atom/ns#' term='c'/><title type='text'>메모리 할당/해제 단순화 하기</title><content type='html'>코딩을 하다보면 함수내에서 동적으로 메모리를 할당하고 그 함수를&lt;br /&gt;벗어나기 전에 해제 하는 것이 보통의 원칙이다. 문제는 할당해야할 변수가&lt;br /&gt;많다면 코드를 실행하는 순간순간 할당 성공 유무 체크, 실패시 이전 할당을&lt;br /&gt;해제하기 위한 지저분한 코드가 들어가게 마련이다. 이런 지저분함을&lt;br /&gt;없애기 위해 방법으로 할당은 여러번 나누어서 하데 해제는 한번의 호출로&lt;br /&gt;이전 할당을 모두 해제 하는 방식을 생각해 볼 수 있다.&lt;br /&gt;&lt;br /&gt;할당시 포인터를 stack 기반의 구조에 넣는다. &lt;br /&gt;해제시 현재 호출함수 레벨에서 stack에 들어간 pointer들을&lt;br /&gt;자동으로 찾아 해제한다.&lt;br /&gt;&lt;br /&gt;'프로그래밍 수련법'(인사이트) 이라는 책의 '성능'편에 이와 유사한 언급이&lt;br /&gt;있다. 이 책에서는 스택 기반의 메모리 할당 라이브러리가 있다고 한다.&lt;br /&gt;스택 기반이라 해제를 따로 호출할 필요가 없다는 것이다. 함수가 끝나면&lt;br /&gt;stack은 자동으로 청소 되기 때문이다. 헌데 이 책에서는 자세한 구현에&lt;br /&gt;대한 언급은 없다. &lt;br /&gt;나름 방법을 생각해 보면 인라인 어셈을 사용하여 SP 레지스터를 핸들링하지&lt;br /&gt;않을까 생각된다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/291727137054757914-6654018703266947777?l=ieggstory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ieggstory.blogspot.com/feeds/6654018703266947777/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=291727137054757914&amp;postID=6654018703266947777&amp;isPopup=true' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/6654018703266947777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/6654018703266947777'/><link rel='alternate' type='text/html' href='http://ieggstory.blogspot.com/2008/04/blog-post.html' title='메모리 할당/해제 단순화 하기'/><author><name>에그</name><uri>http://www.blogger.com/profile/01016826165526528783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-291727137054757914.post-8943463545970144932</id><published>2008-03-05T22:04:00.007+09:00</published><updated>2008-04-14T17:13:19.732+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='__VA_ARGS__'/><category scheme='http://www.blogger.com/atom/ns#' term='xlc'/><category scheme='http://www.blogger.com/atom/ns#' term='variable-arguments'/><title type='text'>xlc 컴파일러의 __VA_ARGS__ 사용 예</title><content type='html'>&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;#define LOG_PRINT(level, ...)    my_logprint(int level,  __VA_ARGS__)&lt;br /&gt;&lt;br /&gt;void my_logprint(int level, char *fmt, ...)&lt;br /&gt;{&lt;br /&gt;   va_list ap;&lt;br /&gt;&lt;br /&gt;   va_start(ap, fmt);&lt;br /&gt;   ...&lt;br /&gt;   va_end(ap);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;위 코드에서 주의할 점은 매크로 정의 라인에서는 첫번째 파라메터 이후에 __VA_ARGS__ 가&lt;br /&gt;오고 함수 정의에서는 두번째 파라메터 이후에 ... 이 온다는 것이다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/291727137054757914-8943463545970144932?l=ieggstory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ieggstory.blogspot.com/feeds/8943463545970144932/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=291727137054757914&amp;postID=8943463545970144932&amp;isPopup=true' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/8943463545970144932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/8943463545970144932'/><link rel='alternate' type='text/html' href='http://ieggstory.blogspot.com/2008/03/xlc-vaargs.html' title='xlc 컴파일러의 __VA_ARGS__ 사용 예'/><author><name>에그</name><uri>http://www.blogger.com/profile/01016826165526528783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-291727137054757914.post-7992687288253163830</id><published>2008-03-03T23:24:00.001+09:00</published><updated>2008-03-03T23:25:59.605+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='객체지향 용어'/><category scheme='http://www.blogger.com/atom/ns#' term='object-oriented terminology'/><title type='text'>객체지향 용어 정리</title><content type='html'>1. Class - A class is a model of an entity or object.&lt;br /&gt;2. Instance - An  instance is a nonspecific actualization of the class.&lt;br /&gt;3. Object - An object  is a specific actualization of the class model, created at runtime, which uses  the class as a template.&lt;br /&gt;4. Message - A message is a specific behavior  undertaken by the object, requesting the receiver to perform a behavior.&lt;br /&gt;5.  Method - Methods are the associated actions performed by an object when it  receives the message.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/291727137054757914-7992687288253163830?l=ieggstory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ieggstory.blogspot.com/feeds/7992687288253163830/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=291727137054757914&amp;postID=7992687288253163830&amp;isPopup=true' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/7992687288253163830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/7992687288253163830'/><link rel='alternate' type='text/html' href='http://ieggstory.blogspot.com/2008/03/blog-post.html' title='객체지향 용어 정리'/><author><name>에그</name><uri>http://www.blogger.com/profile/01016826165526528783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-291727137054757914.post-559394358402809845</id><published>2008-02-05T10:47:00.002+09:00</published><updated>2008-03-05T22:13:31.276+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hostid'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>각종 Unix 에서의 hostid 얻는 법</title><content type='html'>어떤 시스템에서는 hostid 라는 명령어가 있기도 하고 uname -i 형태로 얻을 수 있는 시스템도 있다. 이중 특정 시스템에서는 hostid 명령어가 올바른 값을 되돌리지 않기도 한다.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;AIX (RS/6000,  PPC)    uname -m 결과의 하위 2글자를 제거 후 하위 8자리&lt;br /&gt;HP                     echo `uname -i` 16op | dc&lt;br /&gt;Linux                  /sbin/ifconfig ech0 | grep Hwaddr  6바이트 네트워크 어드레스&lt;br /&gt;SGI                    echo `/etc/sysinfo -s` 16op | dc&lt;br /&gt;SUN                    hostid&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;참조 : http://www.veritools-usa.com/hostid.htm&lt;br /&gt;&lt;/tt&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/291727137054757914-559394358402809845?l=ieggstory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ieggstory.blogspot.com/feeds/559394358402809845/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=291727137054757914&amp;postID=559394358402809845&amp;isPopup=true' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/559394358402809845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/559394358402809845'/><link rel='alternate' type='text/html' href='http://ieggstory.blogspot.com/2008/02/unix-hostid.html' title='각종 Unix 에서의 hostid 얻는 법'/><author><name>에그</name><uri>http://www.blogger.com/profile/01016826165526528783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-291727137054757914.post-369344711670313469</id><published>2008-01-16T09:32:00.001+09:00</published><updated>2008-03-03T23:48:44.155+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DB2'/><category scheme='http://www.blogger.com/atom/ns#' term='CLI'/><title type='text'>DB2 CLI 프로그램 trace file</title><content type='html'>~db2inst/sqllib/cfg/db2cli.ini 이 파일에 다음의 내용을 입력한다.&lt;br /&gt;&lt;br /&gt;[COMMON]&lt;br /&gt;Trace=1 ; trace 출력&lt;br /&gt;TraceErrImmediate=1  ; 에러인 경우 즉시 출력&lt;br /&gt;TraceComm=1 ; 통신 출력&lt;br /&gt;TraceFileName=/tmp/clitrace.txt ; 출력 파일명&lt;br /&gt;TraceFlush=1 ; 배출&lt;br /&gt;TraceFlushOnError=1 ;&lt;br /&gt;TraceTimestamp=1&lt;br /&gt;&lt;a href="javascript:void(0)" tabindex="10" onclick="return false;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/291727137054757914-369344711670313469?l=ieggstory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ieggstory.blogspot.com/feeds/369344711670313469/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=291727137054757914&amp;postID=369344711670313469&amp;isPopup=true' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/369344711670313469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/369344711670313469'/><link rel='alternate' type='text/html' href='http://ieggstory.blogspot.com/2008/01/db2-cli-trace-file.html' title='DB2 CLI 프로그램 trace file'/><author><name>에그</name><uri>http://www.blogger.com/profile/01016826165526528783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-291727137054757914.post-7558865550991199665</id><published>2007-12-18T23:11:00.001+09:00</published><updated>2008-04-14T17:15:33.817+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='memory leak'/><category scheme='http://www.blogger.com/atom/ns#' term='malloc'/><category scheme='http://www.blogger.com/atom/ns#' term='AIX'/><title type='text'>AIX에서 Memory Leak 찾는 기법</title><content type='html'>환경변수를 이용하여 malloc, free 를 추적할 수 있다.&lt;br /&gt;&lt;br /&gt;MALLOCDEBUG=report_allocations,output:/tmp/alloc_output.txt&lt;br /&gt;&lt;br /&gt;프로그램이 실행되는 동안 위의 환경변수가 설정되어 있는 경우 /tmp/alloc_output.txt&lt;br /&gt;파일로 alloc, free 되는 정보가 출력된다. 프로그램이 실행되는 동안은 alloc,&lt;br /&gt;free 할때마다 그 기록을 메모리상에 가지고 있다가 종료가 되면 해제되지&lt;br /&gt;않은 alloc 정보만 /tmp/alloc_output.txt 로 출력된다.&lt;br /&gt;&lt;br /&gt;더 자세한 사항은 AIX 5L Version 5.3 General Programming Concepts: Writing&lt;br /&gt;and Debugging Programs 에 나와 있다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/291727137054757914-7558865550991199665?l=ieggstory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ieggstory.blogspot.com/feeds/7558865550991199665/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=291727137054757914&amp;postID=7558865550991199665&amp;isPopup=true' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/7558865550991199665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/7558865550991199665'/><link rel='alternate' type='text/html' href='http://ieggstory.blogspot.com/2007/12/aix-memory-leak.html' title='AIX에서 Memory Leak 찾는 기법'/><author><name>에그</name><uri>http://www.blogger.com/profile/01016826165526528783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-291727137054757914.post-7189333526918175454</id><published>2007-10-30T10:19:00.003+09:00</published><updated>2010-04-07T16:29:36.646+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oracle instance client'/><title type='text'>오라클 인스턴스 클라이언트(Oracle Instance Client) 설치</title><content type='html'>무엇,왜 : 만약 Pro*c으로 프로그램을 개발 하였다면 그것을 실행하기 위해서는 설치 플랫폼에 최소한 Oracle Client가 설치되어 있어야 한다. 하지만 번거롭다. 오라클 설치는 CD을 필요로 하고 용량이 많이 차지하며 X-terminal, root 권한을 필요로 한다. 이런 설치없이 독립적으로 동작하게 한다. 단지 필요한건 copy와 editor 뿐. (&lt;span style="font-weight:bold;"&gt;하지만 10g 이후 버전만 지원??&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;어떻게: oracle instance client 을 오라클 홈페이지에서 받자.&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/tech/oci/instantclient/index.html"&gt;여기서&lt;/a&gt;&lt;br /&gt;Basic, SQL*Plus, SDK(개발자라면) 을 우선으로 다운받고 압축을 해제한다. (공통적으로 instanceclient_xx_y 폴더를 포함하고 있다)&lt;br /&gt;&lt;br /&gt;환경 변수를 설정한다. 로그인 쉘 스크립트에 아래 환경 변수들을 각기 설정하자.&lt;br /&gt;&lt;br /&gt;  ORACLE_HOME,PATH, TNS_ADMIN : instanceclient_xx_y 경로로&lt;br /&gt;  NLS_LANG : AMERICAN_AMERICA.KO16KSC5601 혹은 적당한 값&lt;br /&gt;&lt;br /&gt;다음은  tnsnames.ora 생성, 서버의 tnsnames.ora 을 복사해 와도 된다. 주의할 것은 tnsnams.ora 내용을 확인 할것.&lt;br /&gt;&lt;br /&gt;주의: Pro*c 용 헤더파일은 없다. 만약 Pro*C 용 헤더파일들이 필요하다면 이 설치로는 부족하다. 오라클  패키지를 다운로드 받은 다음 선택설치로 선택하고 개발 및 Runtime, SQLPLUS 항목을 선택하고 설치하면 된다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/291727137054757914-7189333526918175454?l=ieggstory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ieggstory.blogspot.com/feeds/7189333526918175454/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=291727137054757914&amp;postID=7189333526918175454&amp;isPopup=true' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/7189333526918175454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/7189333526918175454'/><link rel='alternate' type='text/html' href='http://ieggstory.blogspot.com/2007/10/oracle-instance-client.html' title='오라클 인스턴스 클라이언트(Oracle Instance Client) 설치'/><author><name>에그</name><uri>http://www.blogger.com/profile/01016826165526528783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-291727137054757914.post-5871127490842515623</id><published>2007-07-25T09:36:00.000+09:00</published><updated>2007-10-30T10:19:49.424+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hsm'/><category scheme='http://www.blogger.com/atom/ns#' term='multi-thread'/><category scheme='http://www.blogger.com/atom/ns#' term='AIX'/><category scheme='http://www.blogger.com/atom/ns#' term='fork'/><title type='text'>fork와 thread 조합에서 만난 버그</title><content type='html'>개발 플랫폼 정보: AIX 5.3, xlc,oracle Pr*C&lt;br /&gt;&lt;br /&gt;프로그램은 conf 파일을 읽고 패스워드를 입력받는다.&lt;br /&gt;DB 접속 테스트. daemon으로 동작하기 위해 terminal 종속을 끝는다.&lt;br /&gt;fork를 호출하여 Process M, A, W 로 분기한다.&lt;br /&gt;&lt;br /&gt;M - Master Process&lt;br /&gt;A - Admin Process&lt;br /&gt;W - Work Process&lt;br /&gt;&lt;br /&gt;W 프로세스는 다시 pthread_create 을 호출하여 thread R, I, M 로 분리된다.&lt;br /&gt;&lt;br /&gt;r - recv thread&lt;br /&gt;i - Issue thread&lt;br /&gt;m - monitor thread&lt;br /&gt;&lt;br /&gt;thread 생성후 pthread_key을 사용하여 hsm세션을 정보를 thread별로 만든다.&lt;br /&gt;(thread specific data)&lt;br /&gt;&lt;br /&gt;버그는 W 가 임의 동작으로 죽은후  M이 W을 다시 fork 한 후 W가 pthread_key 로&lt;br /&gt;저장하는 세션 정보에서 발생한다. W 가 만드는 r, i, m 스레드가 자신들이 각자&lt;br /&gt;만든 값으로 설정되는 것이 아니라(즉, 각 스레드가 최소 한번은 pthread_setspecific()&lt;br /&gt;함수를 호출해야 하나 그렇지 못한다).  pthread_setspecific()은 한번만 이루어지고&lt;br /&gt;pthread_getspecific()이 3번 호출되면 2번째 호출부터는 NULL이 리턴되는 것이 아니다.&lt;br /&gt;정상적인 시나리오는 getspecific() 호출에 NULL이 리턴되고 setspecific() 호출로 값을&lt;br /&gt;설정한다.&lt;br /&gt;&lt;br /&gt;버그가 발생한 이유는 M이 W을 초기화할 당시 hsm 을 완전히 지우지 않았다.&lt;br /&gt;M이 fork로 생성한 W는 M의 hsm 정보를 가지고 있다(이 말은 hsm에 대한 pthread_key&lt;br /&gt;을 가지고 있다는 것과 같다).&lt;br /&gt;&lt;br /&gt;W의 1번째 hsm 정보는 M의 hsm정보를 가져오고 이후 pthread_create는 동일한 pthread_key&lt;br /&gt;로부터 어떤 가비지 값을 가져오는 듯 하다.&lt;br /&gt;&lt;br /&gt;--&gt; fork(), pthread_create()의 혼합사용에서 있어서, pthread_key(), pthread_get,setspecific()&lt;br /&gt;사용시 대단히 fork() 이전에 pthread_key_t은 삭제되어야 한다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/291727137054757914-5871127490842515623?l=ieggstory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/5871127490842515623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/291727137054757914/posts/default/5871127490842515623'/><link rel='alternate' type='text/html' href='http://ieggstory.blogspot.com/2007/07/fork-thread.html' title='fork와 thread 조합에서 만난 버그'/><author><name>에그</name><uri>http://www.blogger.com/profile/01016826165526528783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>
