<?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://isma44.egloos.com</link>
	<description>일본 생활의 여러 생존 팁 (비자/어학/직장생활 등)</description>
	<language>ko</language>
	<pubDate>Wed, 08 Apr 2009 14:35:47 GMT</pubDate>
	<generator>Egloos</generator>
	<image>
		<title>일본 서바이벌</title>
		<url>http://pds.egloos.com/logo/1/200504/08/68/c0008168.gif</url>
		<link>http://isma44.egloos.com</link>
		<width>80</width>
		<height>69</height>
		<description>일본 생활의 여러 생존 팁 (비자/어학/직장생활 등)</description>
	</image>
  	<item>
		<title><![CDATA[ 일본 취업비자 관련, 일본 회사의 역할 및 준비 서류 ]]> </title>
		<link>http://isma44.egloos.com/4908072</link>
		<guid>http://isma44.egloos.com/4908072</guid>
		<description>
			<![CDATA[ 
  <p><br />
</p><p>아래는 일본 회사에서, 한국에 계신 합격자에게<br />
어떠한 서류를 필요로 하는지, 또한 일본에 있는<br />
회사는 비자 받기까지 어떠한 역할을 해야 하는지를<br />
알려주는 좋은 예이기에 참고해 보았습니다.</p><p>예전의 글이긴 합니다만 나름 정확했던 같아서 유용했었습니다.<br />
</p><p><br />
</p><p>원문 : <a href="http://4kg.net/node/1622">http://4kg.net/node/1622</a><br />
</p><p><br />
</p><p>------------------------- 원문 ------------------------------</p><p><br />
</p><p>지난 12월자로 일본 취업이 결정됐구요.<br />
이 회사는 아직 2년정도된 작은 항공회사라..<br />
외국인비자 신청은 처음이라고 합니다.<br />
그래서 처음부터 끝까지 제가 조사해서 어떻게 해야하는지 알려줘야 하는데요.<br />
저 역시도 비자 관련해서는 아무것도 몰라서요.<br />
그래도 다행히도 이런 좋은 사이트를 발견해서 도움을 간절히 요청합니다.</p><p>일본에는 지난 4월에 무비자로 들어가서 3개월정도<br />
또 지난 10월에 들어가서 3개월정도 있다 지금 현재 한국에 몇일 전에 들어와 있는 상태입니다.<br />
물론 그 기간중에 취업이 결정되어서 한달정도 무비자로 일하다 들어왔는데요.</p><p>1. 취업비자를 받으려면 우선 재류자격인정증명서를 받아야한다고 여기서 보니 그렇게 적혀있는데요..아무래도 제가 한국에 있으니 회사측에서 준비해서 입국관리국에 제출해야할것 같은데요..<br />
회사에서 재류자격인정 증명서를 받는 절차랑 어떤 서류가 필요한가요?<br />
제가 한국에서 회사측에 보내 줄 서류도 함께 알려주시면 감사드리겠습니다.(정말 초보이기에 되도록이면 하나부터 열까지 상세하게 부탁드립니다^^)</p><p>2. 회사에 들어가면 해외업무로 한국담당이나 러시아 관련업무가 주가 될것 같습니다.<br />
참고로 제 전공은 노어노문 러시아어 러시아문학과이구요.<br />
전공과 일이 관련이 조금은 있어 비자 받는게 조금 쉬울까요 어떨까요?<br />
전공외에 일본어는 정말 불편없이 사용할수 있구요.<br />
그래도 졸업증외에는 자격증 같은것이 없답니다..괜찮을까요?</p><p>3. 재류자격증명을 받기위해 사유서를 적는다고 들었는데..그것은 누가 어떤식으로 적어야하는지..회사에서 이 사람 꼭 필요합니다라는 식으로 회사쪽에서 적어도 되는지..<br />
제가 문장실력이 없어서 적는게 은근히 불안한데요..<br />
사유서 예같은것은 찾을 수 없을까요?</p><p>4. 서류 모두 작성해서 꼭 입국관리국에 가야하나요?<br />
우편으로 붙이거나하면 안되나요?</p><p>정말 초보라서 조금 서류준비하는것도 무섭네요..<br />
회사입장에서도 처음이라 조심스러운 모양입니다..<br />
많은 도움기다릴게요~^^</p><p>* 게시물관리님에 의해서 게시물 복사되었습니다 (2007-09-02 22:45)</p><p><br />
</p><p>-----------------------------</p><p><br />
</p><p>(주)JAIC 	2007.01.10-21:47<br />
비자 노하우란에 닉네임 J 라는 분이 쓰신 내용을 참고하시구요<br />
저희 회사에서는 기술비자이신 분들을 대상으로 하는데<br />
아마 서류는 거의 같은것으로 알고 있습니다.<br />
<span style="font-weight: bold;">1.채용통지서</span><br style="font-weight: bold;"><span style="font-weight: bold;">2.고용계약서</span><br style="font-weight: bold;"><span style="font-weight: bold;">3.사진 2장 (세로4*가로3)</span><br style="font-weight: bold;"><span style="font-weight: bold;">4.대학 졸업증명서 ; 영문 (졸업예정증명서로 대체 가능) (최종학력)</span><br style="font-weight: bold;"><span style="font-weight: bold;">5.대학 성적증명서 또는 커리규럼 ; 영문</span><br style="font-weight: bold;"><span style="font-weight: bold;">6.경력증명서 또는 퇴직증명서 ; 경험한 회사 전부</span><br style="font-weight: bold;"><span style="font-weight: bold;">영문인 경우 번역 필요없음.</span><br style="font-weight: bold;"><span style="font-weight: bold;">한글인 경우 복사해서 일본어로 번역을 달면 됩니다.</span><br style="font-weight: bold;"><span style="font-weight: bold;">(경력이 없으면 필요없습니다.)</span><br style="font-weight: bold;"><span style="font-weight: bold;">7.자격증의 원본 및 복사 (정보처리기사, 일본어 능력시험등)</span><br style="font-weight: bold;"><span style="font-weight: bold;">가지고 계신 자격증을 복사하시면 됩니다.</span><br style="font-weight: bold;"><span style="font-weight: bold;">영문인 경우 번역 필요없음.</span><br style="font-weight: bold;"><span style="font-weight: bold;">한글인 경우 추가로 1부 더 복사해서 일본어로 번역을 달면 됩니다.</span><br style="font-weight: bold;"><span style="font-weight: bold;">필요서류는 이상입니다.</span><br style="font-weight: bold;"><span style="font-weight: bold;">8.출생지의 주소(본적을 옮기신 적이 있으면 본적주소와는 틀립니다.)</span><br style="font-weight: bold;"><span style="font-weight: bold;">9.일본의 출입국 내역</span><br style="font-weight: bold;"><span style="font-weight: bold;">관광이든 뭐든 상관없이 일본의 출입국 횟수와 가장 최근의 입국일과</span><br style="font-weight: bold;"><span style="font-weight: bold;">출국일을 적어 주시면 됩니다.</span><br style="font-weight: bold;"><span style="font-weight: bold;">10.여권 복사 (사진 있는 페이지)</span><br style="font-weight: bold;"><span style="font-weight: bold;">11.이력서 (이력서의 경력부분의 날자와 경력증명서의 날자와 같아야 합니다.)</span><br style="font-weight: bold;"><span style="font-weight: bold;">*1,2번은 회사에서 작성하신것을 한국에서 메일로 받으셔서</span><br style="font-weight: bold;"><span style="font-weight: bold;">다른 서류들 부치실때 같이 본인의 도장이 찍힌것을 부치시면 됩니다.</span><br style="font-weight: bold;"><span style="font-weight: bold;">*8,9는 그냥 메모 형식으로 적어 주셔도 됩니다.</span><br style="font-weight: bold;"><span style="font-weight: bold;">신청서에 적는 란이 있거든요.</span></p><p style="font-weight: bold;">회사 직원이 직접 가야 합니다.<br />
회사직원임을 입증할 사원증(사진이 있는것)을 가지고 가면 되요.</p><p>-----</p><p>김미경 	2007.01.11-13:01<br />
좋은 답변 감사드립니다..(주)JAIC 님<br />
그런데요..재류자격인정증명교부신청서라는게 있던데요..그건 작성안해도 되는 건가요? 제가 작성해서 회사에 보내줘야하는 건가요?<br />
이력서같은것도 제출안해도 되는 건가요? 엄청 빈칸남겨 놓지말고 아르바이트등 많이 적는 것이 좋다고 들었는데..어떤가요?</p><p>-----</p><p>박상 	2007.01.12-00:28<br />
본인이 하는게 아니고 회사에서 해야하는 상황이므로<br />
위에 있는 서류들과 말씀하신대로 이력서 그리고 재류자격인정증명교부신청서(입국관리국비치/인터넷에서 다운로드 가능)가 필요합니다.<br />
이력서에 경력란에는 하시는 업무와 관련 있는것이라면 다 적는게 좋지요.</p><br/><br/>tag : <a href="/tag/일본" rel="tag">일본</a>,&nbsp;<a href="/tag/비자" rel="tag">비자</a>,&nbsp;<a href="/tag/재류자격인정" rel="tag">재류자격인정</a>,&nbsp;<a href="/tag/입국관리국" rel="tag">입국관리국</a>,&nbsp;<a href="/tag/취로" rel="tag">취로</a>,&nbsp;<a href="/tag/취업" rel="tag">취업</a>			 ]]> 
		</description>
		<category>일본</category>
		<category>비자</category>
		<category>재류자격인정</category>
		<category>입국관리국</category>
		<category>취로</category>
		<category>취업</category>

		<comments>http://isma44.egloos.com/4908072#comments</comments>
		<pubDate>Wed, 08 Apr 2009 14:35:47 GMT</pubDate>
		<dc:creator>혼수상태</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 몇몇 WIKI 소프트웨어를 비교하다. 2009년초 기준 ]]> </title>
		<link>http://isma44.egloos.com/4827119</link>
		<guid>http://isma44.egloos.com/4827119</guid>
		<description>
			<![CDATA[ 
  몇몇 WIKI 소프트웨어를 비교하다. 2009년초 기준.<br /><br />위로부터 추천 순이다.<br /><br /><code><br />* DokuWiki ( http://www.dokuwiki.org/dokuwiki )<br />  - DB를 사용하지 않고 설치가 아주 간단하다.<br />  - PlugIn도 다양하고 장착이 편하다. http://www.dokuwiki.org/plugins<br />  - 테마/스킨도 다양하고 예쁘다. http://www.dokuwiki.org/Template<br />  - 다국어 지원도 아주 잘 돼 있다. <br />    日本語対応 예) http://www.higuchi.com/dokuwiki/dokuwiki:localize                    <br />  - 글쓰기 및 편집 기능이 아주 편해서 컨텐츠의 작성이 용이하다.<br /><br />* TikiWiki ( http://www.tikiwiki.org )<br />  - DB를 필요로 한다. 그만큼 대용량 위키에도 반응이 좋다.<br />  - PlugIn도 다양하다. CMS 기능도 보유하고 있다.<br />  - 테마/스킨도 다양하고 예쁘다.  http://themes.tikiwiki.org<br />  - 기능 면에서는 가장 많은 기능을 보유하고 있다.<br /><br />* MediaWiki ( http://www.mediawiki.org/wiki/MediaWiki )<br />  - 예쁘기로는 둘째라면 서러운 위키다.<br />  - DB를 사용한다. 무조건 공개 베이스인 위키인지라 ACL가 약하다.<br /><br />* PukiWiki ( http://pukiwiki.sourceforge.jp )<br />  - 일본산 위키로 개발이 2006년경 중단됐다. 그래서 상대적으로 기능이 약하다.<br />    그래도 일본에서는 네임밸류가 가장 높은 위키다.<br />  - 테마/스킨이 약했는데 최근에는 다양한 스킨을 지원한다.<br />    http://pukiwiki.sourceforge.jp/?%E8%87%AA%E4%BD%9C%E3%82%B9%E3%82%AD%E3%83%B3<br />    <br />* 기타 WackoWiki (DB사용, 다국어화 부족), PMWiki (스킨 부족) 등이<br />  있었지만 위키매트릭스를 참고해서 상위의 것만 간단히 비교한다.<br /></code><br /><br /><br />참고) 위키 소프트웨어를 비교한 사이트를 안내하자면,<br />위키매트릭스가 제일 좋다. 아래는 몇몇 위키를 비교한 테이블이다.<br />- http://www.wikimatrix.org/compare/DokuWiki+MediaWiki+PmWiki+PukiWiki+TikiWiki-CMS-<br /><br />Groupware+WackoWiki			 ]]> 
		</description>

		<comments>http://isma44.egloos.com/4827119#comments</comments>
		<pubDate>Tue, 27 Jan 2009 14:09:14 GMT</pubDate>
		<dc:creator>혼수상태</dc:creator>
	</item>
	<item>
		<title><![CDATA[ PHP 작은 팁 - 변수,배열, 객체를 구별해서 화면에 디버그 출력하는 함수 ]]> </title>
		<link>http://isma44.egloos.com/4827116</link>
		<guid>http://isma44.egloos.com/4827116</guid>
		<description>
			<![CDATA[ 
  변수,배열, 객체를 구별해서 화면에 디버그 출력하는 함수다.<br /><br /><code><br />function debug3( $mixed ) {<br />    if ( $mixed == NULL )            { echo "<br />debug3 value is NULL"; } <br />    else if ( is_array( $mixed ) )     echo "<br /></code><pre>".print_r( $mixed, true )."&lt;/pre&gt;";&lt;br /&gt;    else if ( is_object($mixed ) )     echo "&lt;br /&gt;&lt;pre&gt;".var_export( $mixed, true )."&lt;/pre&gt;";&lt;br /&gt;    else                               echo "&lt;br /&gt;&lt;pre&gt;".$mixed."</pre>"; <br />}<br />			 ]]> 
		</description>

		<comments>http://isma44.egloos.com/4827116#comments</comments>
		<pubDate>Tue, 27 Jan 2009 14:07:45 GMT</pubDate>
		<dc:creator>혼수상태</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 8자리의 랜덤 문자열을 작성하는 함수 rand8() ]]> </title>
		<link>http://isma44.egloos.com/4827115</link>
		<guid>http://isma44.egloos.com/4827115</guid>
		<description>
			<![CDATA[ 
  8자리의 랜덤 문자열을 작성하는 함수 rand8()<br /><br />특정 자리수의 랜덤한 문자열을 20만건 작성해야 할 일이 생겨서 급하게 만들어봤다.<br />제한 조건으로는 절대로 겹치면 안된다는 것.<br />겹치지 않는 조건을 충족하기 위해 MySQL까지 동원해서 Unique성을 체크했다.<br /><br />의외로 넷 상의 많은 공개 함수들이 엉터리였다.<br />또한 문자열 속에 포함되어야 하는 문자, 포함안될 문자를 설정하는 기능도 약했다.<br />우연히 구한 잘 된 함수 rand8()을 기록해 둔다. <br /><br />정말 아쉽게도, 원래 출처였던 외국사이트의 공개 주소를 잃어버린 것 같아 죄송하다.<br />아래에 8자리의 랜덤 문자열을 작성하는 함수 rand8()에 대한 예제이다.<br />상단부 소스는 실패한 여타 함수들도 함께 있다.<br /><br /><code><br />set_time_limit( 10000 );<br /><br />function make_seed()<br />{<br />  list($usec, $sec) = explode(' ', microtime());<br />  return (float) (($sec + $usec ) * 100);<br />}<br /><br />function VISION_TO_RANDOM<br />(<br />	// autor Femi Hasani [www.vision.to]<br />	$length=7, // string length<br />	$uselower=1, // use lowercase letters<br />	$useupper=1,  // use uppercase letters<br />	$usespecial=1, // use special characters<br />	$usenumbers=1, // use numbers<br />	$prefix=''<br />	)<br />{<br /><br />    $key = $prefix;<br /> // Seed random number generator<br />    // mt_srand((double)microtime() * rand(1000000, 9999999));<br />	mt_srand( make_seed()*100 );<br /><br />    $charset = "";<br />    if ($uselower == 1) $charset .= "abcdefghjkmnpqrstuvwxyz";<br />//    if ($useupper == 1) $charset .= "ABCDEFGHJKMNPQRSTUVWXYZ";<br />    if ($usenumbers == 1) $charset .= "23456789";<br />    // if ($usespecial == 1) $charset .= "~#$%^()_+-={}][";<br />    while ($length &gt; 0) {<br />        $key .= $charset[rand(0, strlen($charset)-1)];<br />        $length--;<br />    }<br />    return $key;<br />} <br /><br /><br />function range2($start, $end, $length)<br />{<br />	$str_array = range($start, $end);<br />	srand((double) microtime() * 1000000);<br />	$text = '';<br />	for($i = 0; $i &lt; $length; $i++)<br />	{<br />	$text .= $str_array[rand(0, count($str_array) - 1)];<br />	}<br />	return $text;<br />}<br /><br /><br /><br />function createRandomPassword() {<br />    $chars = "abcdefghjkmnpqrstuvwxyz23456789";<br /><br />    srand((double)microtime()*1000000);<br /><br />    $i = 0;<br /><br />    $pass = '' ;<br />    while ($i &lt;= 7) {<br /><br />        $num = rand() % 33;<br />        $tmp = substr($chars, $num, 1);<br />        $pass = $pass . $tmp;<br />        $i++;<br />    }<br /><br />	if ( strlen( $pass) == 8 )	    return $pass;<br />	else false;<br />}<br /><br />// SUCCESS!<br />function rand8()	{<br />      $len = 7;<br />      $base='abcdefghjkmnpqrstuvwxyz23456789';<br />      $max=strlen($base)-1;<br />      $activatecode='';<br />      mt_srand((double)microtime()*10000000);		//// IMPORTANT!!!!! 10000000<br />      while (strlen($activatecode)&lt;$len+1)<br />	      $activatecode.=$base{mt_rand(0,$max)};<br />	<br />	if ( strlen( $activatecode ) == 8 )	    return $activatecode;<br />	else false;<br />}<br /><br /><br />$conn = mysql_connect('localhost', 'www', 'www');<br />mysql_select_db( "test" ); <br /><br /><br />while ( $ii &lt; 10000000 )	{<br />	// echo VISION_TO_RANDOM( 8 )."<br />";<br /><br />	// echo "insert into `serial8`(`sn`,`randvalue`) values ( NULL,'".VISION_TO_RANDOM( 8 )."');<br />";<br />	// insert into `serial8`(`sn`,`randvalue`) values ( NULL,'8pawcvmh');<br /><br />	// $strSQL = "insert into `serial8`(`sn`,`randvalue`) values ( NULL,'".VISION_TO_RANDOM( 8 )."')";<br />	$str = rand8();<br />	if ( $str != false )	{<br />		$strSQL = "insert into `serial8`(`sn`,`randvalue`) values ( NULL,'".$str."')";<br />	}<br />	// $strSQL = "insert into `serial8`(`sn`,`randvalue`) values ( NULL,'".range2( '2', 'z', 8 )."')";<br />	<br />	$result = mysql_query( $strSQL ); <br />	if (!$result) {<br />		// echo ('Invalid query: ' . mysql_error() . "<br />");<br />	}<br />	else<br />	{<br />		echo ('Inserted: ' . $strSQL . "<br />");<br />	}<br /><br />	$ii++;<br />}<br /><br />mysql_close( $conn );<br /><br />/***<br />検証用SQL ： randvalueフィールドはUnique条件<br />select count(1) from serial8 where length( randvalue )!=8<br />or randvalue like '%l%'<br />or randvalue like '%1%'<br />or randvalue like '%o%'<br />or randvalue like '%0%'<br />or randvalue like '%i%'<br />***/<br />?&gt;<br /></code><br /><br /><br />다음에 기회가 되면 이를 클래스화해서 공개하는 것도 좋을 것 같다.<br /><br />우선 시간이 없어서 클래스화 했을 경우의 예제 소스를 기록해 둔다.<br /><br /><code><br />/**<br /> * Uniqueな文字列をランダム生成するクラス <br /> *<br /> * PHP5.x用、PHP4.1.x系にも対応。<br /> * このファイルはUTF-8フォーマット、TABの幅は4。<br /> *<br /> * @access  public<br /> * @create  2008/11/28<br /> * @version v0.1 <br /> **/<br /><br />/**********************************<br /> ************  使用例  ************<br /> **********************************<br /><br />	ini_set('memory_limit', '64M');					// 使用メモリの制限を伸ばす。（php.iniの設定が優先）<br />	set_time_limit( 3600 );							// 実行時間を3600秒(1時間)まで伸ばす。<br />	require_once "class.RandomUnique.php";<br /><br />	// 使用例 #1<br />	$objRU = new RandomUnique();					// クラスのInstanceを生成。ランダム文字列のDefault桁数は８である。<br />	$str = $objRU-&gt;getString( 10000 );				// １万件のUniqueなランダム文字列を返す。文字列の各結果は改行(\n)で区別。<br />	echo nl2br( $str );<br />	$arr = $objRU-&gt;getArray( 200000 );				// 20万件のUniqueなランダム文字列を配列(以下'文字配列')で返す。<br /><br />	// 使用例 #2<br />	$objRU2 = new RandomUnique( "abxy123789", 6 );	// クラスのInstanceを生成する際に「文字リスト」と「桁」を設定。<br />	$arr2 = $objRU2-&gt;getArray( 10000000 );			// 1千万件のUniqueなランダム文字配列を返す。メモリ制限を越えるとエラーを配列で返す。<br /><br />	// 使用例 #3<br />	$listChar = "abcdefghjkmnpqrstuvwxyz23456789";	// 「文字リスト」の準備。<br />	$objRU3 = new RandomUnique( $listChar );		// クラスのInstanceを生成する際に「文字リスト」を設定。Default桁数は８である。<br />	$objRU3-&gt;make( 30000 );							// ３万件のUniqueなランダム文字配列で生成する。既存のラン<br /><br />ダム文字値は廃棄される。<br />	$objRU3-&gt;save( "./output.txt" );				// ランダム文字列をファイル名output.txtで保存する。文字列の各結果は改行(\n)で区別。<br /><br />	// 使用例 #4<br />	$objRU4 = new RandomUnique( null , 12 );		// ランダム文字列の桁数は１２で設定。「文字リスト」がnullであればDefault値を使用。<br />	$objRU4-&gt;setChar( "abcdfgxyz23456789!#%*@" );	// ランダム文字列の生成のため使う「文字リスト」を設定。Default値は a～z, 0～9。<br />	$objRU4-&gt;setWidth( 10 );						// ランダム文字列を(１２桁から)１０桁で変更。最大ランダム数は「文字<br /><br />リスト」の長さ^10件。<br />	$objRU4-&gt;make( 40000 );							// ４万件のUniqueなランダム文字配列で生成する。既存のラン<br /><br />ダム文字値は廃棄される。<br />	$bUniq = $objRU4-&gt;isValid();					// 配列で生成されたランダム文字列がUnique性と桁数を満たすか検証(結果はtrue / <br /><br />false)。<br />	if ( !$bUniq ) var_dump($objRU4-&gt;getInvalid());	// ランダム文字列がUnique性を満たない場合、その原因である文字配列などを取得・表示。<br /><br /> **********************************/<br /><br /><br />class RandomUnique	{<br /><br /><br />}	// end of class RandomUnique<br /><br />?&gt;<br /></code>			 ]]> 
		</description>

		<comments>http://isma44.egloos.com/4827115#comments</comments>
		<pubDate>Tue, 27 Jan 2009 14:06:55 GMT</pubDate>
		<dc:creator>혼수상태</dc:creator>
	</item>
	<item>
		<title><![CDATA[ Flash管理画面作成する際のCache問題解決方法 ]]> </title>
		<link>http://isma44.egloos.com/4827113</link>
		<guid>http://isma44.egloos.com/4827113</guid>
		<description>
			<![CDATA[ 
  Flash管理画面作成する際のCache問題解決方法を共有します。<br /><br /><code> <br />１．Flash-Player（例：動画）を呼ぶURL.phpの後ろにランダムParamを追加。<br />     例） rotation-banner.php?293808237401984<br /> <br />２．Flash-Player（例：動画）を呼ぶURL.phpの本文に下記のタグを追加。<br /><br /><br /><br /><br /><br /><br /><br />３．IEの場合、下記のScriptも追加。<br /> <br /><script type="text/javascript"><br/> document.execCommand("ClearAuthenticationCache");  // for IE<br/></script><br /><br /></code>			 ]]> 
		</description>

		<comments>http://isma44.egloos.com/4827113#comments</comments>
		<pubDate>Tue, 27 Jan 2009 14:05:54 GMT</pubDate>
		<dc:creator>혼수상태</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 배열 안에서 2중 정렬을 하려는 경우에 유효한 함수 ]]> </title>
		<link>http://isma44.egloos.com/4827111</link>
		<guid>http://isma44.egloos.com/4827111</guid>
		<description>
			<![CDATA[ 
  배열 안에서 2중 정렬을 하려는 경우에 유효한 함수<br />를 소개한다.<br /><br />http://jp2.php.net/manual/ja/function.array-multisort.php 로부터 인용.<br /><br />------------<br /><br /> php a-t-the-r-a-t-e chir.ag<br />06-Jan-2006 07:10<br />Re: phu at kungphu, 19-Dec-2005 11:36<br /><br />asort($test) will not let me specify which columns to sort ASC/DESC, NUMERIC/STRING etc.<br /><br />I have data similar to what you specified. Now I want to sort $test by points DESC and name ASC. Here's my function that does it, based on suggestions on this page. It uses array_multisort (and hence acts just like it: preserving string-keys etc.)<br /><code><br /><br />  function arrayColumnSort()<br />  {<br />    $n = func_num_args();<br />    $ar = func_get_arg($n-1);<br />    if(!is_array($ar))<br />      return false;<br /><br />    for($i = 0; $i &lt; $n-1; $i++)<br />      $col[$i] = func_get_arg($i);<br /><br />    foreach($ar as $key =&gt; $val)<br />      foreach($col as $kkey =&gt; $vval)<br />        if(is_string($vval))<br />          ${"subar$kkey"}[$key] = $val[$vval];<br /><br />    $arv = array();<br />    foreach($col as $key =&gt; $val)<br />      $arv[] = (is_string($val) ? ${"subar$key"} : $val);<br />    $arv[] = $ar;<br /><br />    call_user_func_array("array_multisort", $arv);<br />    return $ar;<br />  }<br /><br />  $test["pete"]['points']=1;<br />  $test["pete"]['name']='Peter';<br /><br />  $test["mike"]['points']=5;<br />  $test["mike"]['name']='Mike';<br /><br />  $test["zoo"]['points']=2;<br />  $test["zoo"]['name']='John Zoo';<br /><br />  $test["ab"]['points']=2;<br />  $test["ab"]['name']='John Ab';<br /><br />  $test1 = $test;<br /><br />  asort($test1);<br /><br />  $test2 = arrayColumnSort("points", SORT_DESC, SORT_NUMERIC, "name", SORT_ASC, SORT_STRING, $test);<br /><br />  print_r($test1); // asort<br />  print_r($test2); // arrayColumnSort<br /><br />?&gt;<br /></code><br /><br /><code><br />Output from asort:<br /><br />Array<br />(<br />    [pete] =&gt; Array<br />        (<br />            [points] =&gt; 1<br />            [name] =&gt; Peter<br />        )<br /><br />    [ab] =&gt; Array<br />        (<br />            [points] =&gt; 2<br />            [name] =&gt; John Ab<br />        )<br /><br />    [zoo] =&gt; Array<br />        (<br />            [points] =&gt; 2<br />            [name] =&gt; John Zoo<br />        )<br /><br />    [mike] =&gt; Array<br />        (<br />            [points] =&gt; 5<br />            [name] =&gt; Mike<br />        )<br /><br />)<br /><br />Output from arrayColumnSort:<br /><br />Array<br />(<br />    [mike] =&gt; Array<br />        (<br />            [points] =&gt; 5<br />            [name] =&gt; Mike<br />        )<br /><br />    [ab] =&gt; Array<br />        (<br />            [points] =&gt; 2<br />            [name] =&gt; John Ab<br />        )<br /><br />    [zoo] =&gt; Array<br />        (<br />            [points] =&gt; 2<br />            [name] =&gt; John Zoo<br />        )<br /><br />    [pete] =&gt; Array<br />        (<br />            [points] =&gt; 1<br />            [name] =&gt; Peter<br />        )<br /><br />)<br /></code>			 ]]> 
		</description>

		<comments>http://isma44.egloos.com/4827111#comments</comments>
		<pubDate>Tue, 27 Jan 2009 14:04:57 GMT</pubDate>
		<dc:creator>혼수상태</dc:creator>
	</item>
	<item>
		<title><![CDATA[ PHP로 Design Patterns 예제 - Strategy / Observer / Command 패턴을 섞다. ]]> </title>
		<link>http://isma44.egloos.com/4827101</link>
		<guid>http://isma44.egloos.com/4827101</guid>
		<description>
			<![CDATA[ 
  PHP로 Design Patterns 예제 - Strategy / Observer / Command 패턴을 섞다.<br /><br /><code><br />// http://www.ibm.com/developerworks/library/os-php-designptrns/<br />////////////////////////////////////////////////<br />////////////////////////////////////////////////<br /><br />interface IStrategy<br />{<br />  function filter( $record );<br />}<br /><br />class FindAfterStrategy implements IStrategy<br />{<br />  private $_name;<br /><br />  public function __construct( $name )<br />  {<br />    $this-&gt;_name = $name;<br />  }<br /><br />  public function filter( $record )<br />  {<br />    return strcmp( $this-&gt;_name, $record ) &lt;= 0;<br />  }<br />}<br /><br />class RandomStrategy implements IStrategy<br />{<br />  public function filter( $record )<br />  {<br />    return rand( 0, 1 ) &gt;= 0.5;<br />  }<br />}<br /><br />////////////////////////////////////////////////<br />////////////////////////////////////////////////<br /><br />interface IObserver<br />{<br />  function onAdded( $sender, $args );<br />  function onDeleted( $sender, $args );<br />}<br /><br />interface IObservable<br />{<br />  function addObserver( $observer );<br />}<br /><br />////////////////////////////////////////////////<br />////////////////////////////////////////////////<br /><br />interface ICommand<br />{<br />  function onCommand( $name, $args );<br />}<br /><br />class CommandChain<br />{<br />  private $_commands = array();<br /><br />  public function addCommand( $cmd )<br />  {<br />    $this-&gt;_commands []= $cmd;<br />  }<br /><br />  public function runCommand( $name, $args )<br />  {<br />    foreach( $this-&gt;_commands as $cmd )<br />    {<br />      if ( $cmd-&gt;onCommand( $name, $args ) )<br />        return;<br />    }<br />  }<br />}<br /><br />////////////////////////////////////////////////<br />////////////////////////////////////////////////<br /><br /><br />class UserList implements IObservable<br />{<br />	private $_list = array();<br />	private $_observers = array();<br /><br />	public function addObserver( $observer )<br />	{<br />	    $this-&gt;_observers []= $observer;<br />	}<br /><br />	public function __construct( $names )<br />	{<br />		if ( $names != null )<br />		{<br />			foreach( $names as $name )<br />			{<br />				$this-&gt;_list []= $name;<br />			}<br />		}<br />	}<br /><br />	public function add( $name )<br />	{<br />		$this-&gt;_list []= $name;<br />		foreach( $this-&gt;_observers as $obs )	  $obs-&gt;onAdded( $this, $name );<br />	}<br /><br />	public function del( $name )<br />	{<br />		deleteFromArray( $this-&gt;_list, $name, false );<br />		foreach( $this-&gt;_observers as $obs )	  $obs-&gt;onDeleted( $this, $name );<br />	}<br /><br />	public function find( $filter )<br />	{<br />		$recs = array();<br />		foreach( $this-&gt;_list as $user )<br />		{<br />			if ( $filter-&gt;filter( $user ) )		$recs []= $user;<br />		}<br />		return $recs;<br />	}<br />}<br /><br />class UserListObserver implements IObserver<br />{<br />	private $command;<br /><br />	public function __construct()	<br />	{<br />		$this-&gt;command = new CommandChain();<br />		$this-&gt;command-&gt;addCommand( new UserListCommand() );<br />	}<br /><br />	public function onAdded( $sender, $args )<br />	{<br />		echo( "'$args' added user list\n<br />" );<br />		$this-&gt;command-&gt;runCommand( 'add', $args );<br />	}<br /><br />	public function onDeleted( $sender, $args )<br />	{<br />		echo( "'$args' deleted from user list\n<br />" );<br />		$this-&gt;command-&gt;runCommand( 'del', $args );<br />	}<br />}<br /><br />class UserListCommand implements ICommand<br />{<br />	public function onCommand( $name, $args )<br />	{<br />		 $arrValidCommand = array( 'add', 'del' );<br /><br />		if ( !in_array( $name, $arrValidCommand ) )	return false;<br /><br />		if ( $name == 'add' )	echo( "Say to all users : added $args \n<br />" );<br />		if ( $name == 'del' )	echo( "Say to all users : deleted $args \n<br />" );<br />		return true;<br />	}<br />}<br /><br /><br />$ul = new UserList( array( "Andy", "Jack", "Lori", "Megan" ) );<br />$ul-&gt;addObserver( new UserListObserver() );<br /><br />$f1 = $ul-&gt;find( new FindAfterStrategy( "J" ) );<br />echo "</code><pre>".print_r( $f1, true )."&lt;/pre&gt;";&lt;br /&gt;&lt;br /&gt;$ul-&gt;add( "Lori2" );&lt;br /&gt;$f2 = $ul-&gt;find( new FindAfterStrategy( "J" ) );&lt;br /&gt;echo "&lt;pre&gt;".print_r( $f2, true )."&lt;/pre&gt;";&lt;br /&gt;&lt;br /&gt;$ul-&gt;del( "Lori" );&lt;br /&gt;$f3 = $ul-&gt;find( new FindAfterStrategy( "J" ) );&lt;br /&gt;echo "&lt;pre&gt;".print_r( $f3, true )."&lt;/pre&gt;";&lt;br /&gt;&lt;br /&gt;// $f2 = $ul-&gt;find( new RandomStrategy() );&lt;br /&gt;// echo "&lt;pre&gt;".print_r( $f2, true )."</pre>";<br /><br />/////////////////////////////////////////////////////////<br />/////////////////////////////////////////////////////////<br /><br />/*<br />* This function deletes the given element from a one-dimension array<br />* Parameters: $array:    the array (in/out)<br />*             $deleteIt: the value which we would like to delete<br />*             $useOldKeys: if it is false then the function will re-index the array (from 0, 1, ...)<br />*                          if it is true: the function will keep the old keys<br />* Returns true, if this value was in the array, otherwise false (in this case the array is same as before)<br />*/<br />function deleteFromArray(&amp;$array, $deleteIt, $useOldKeys = FALSE)<br />{<br />    $tmpArray = array();<br />    $found = FALSE;<br />    foreach($array as $key =&gt; $value)<br />    {<br />        if($value !== $deleteIt)<br />        {<br />            if(FALSE === $useOldKeys)<br />            {<br />                $tmpArray[] = $value;<br />            }<br />            else<br />            {<br />                $tmpArray[$key] = $value;<br />            }<br />        }<br />        else<br />        {<br />            $found = TRUE;<br />        }<br />    }<br />  <br />    $array = $tmpArray;<br />  <br />    return $found;<br />}<br />?&gt;<br /><br /><br />PHP5 이상에서의 실행결과는 다음과 같다.<br /><code><br />Array<br />(<br />    [0] =&gt; Jack<br />    [1] =&gt; Lori<br />    [2] =&gt; Megan<br />)<br /><br />'Lori2' added user list<br />Say to all users : added Lori2<br /><br />Array<br />(<br />    [0] =&gt; Jack<br />    [1] =&gt; Lori<br />    [2] =&gt; Megan<br />    [3] =&gt; Lori2<br />)<br /><br />'Lori' deleted from user list<br />Say to all users : deleted Lori<br /><br />Array<br />(<br />    [0] =&gt; Jack<br />    [1] =&gt; Megan<br />    [2] =&gt; Lori2<br />)<br /><br /></code>			 ]]> 
		</description>

		<comments>http://isma44.egloos.com/4827101#comments</comments>
		<pubDate>Tue, 27 Jan 2009 13:59:08 GMT</pubDate>
		<dc:creator>혼수상태</dc:creator>
	</item>
	<item>
		<title><![CDATA[ Debian系列のLinuxにRedMineを設定する手順 ]]> </title>
		<link>http://isma44.egloos.com/4827088</link>
		<guid>http://isma44.egloos.com/4827088</guid>
		<description>
			<![CDATA[ 
  Debian系列のLinuxにRedMineを設定する手順<br />========================================<br /><br />1. 下記のURLにある、「rubyとrubygems、そしてrailsの導入」を参考。<br /><br />	http://d.hatena.ne.jp/takaxi/20080126/1201334126<br /><br />	※ MySQLは既にInstallされたと想定。<br /><br /><br />2. 下記のURLにある、「railsとRedMineのインストール」を参考。<br /><br />	http://www.srcw.net/blog/2007/09/redmine.html<br /><br />	※ RedMineのSVNアドレスは、下記のURLに記載されています。<br />	http://www.redmine.org/wiki/redmine/Download<br /><br /><br />3. RedMindの初期管理者IDとPWは、admin : adminです。<br />　 日本語化も管理画面とアカウント設定画面から個別設定可能！<br /><br /><br /><br />4. 自動起動のため、下記のURLを参考。<br /><br />	------------<br /><br />	「簡単」http://groups.google.com/group/redmine-users-ja/browse_thread/thread/212dd9f92f9356f5/f659c85b7a31a63a?lnk=gst&amp;q=mongrel_cluster#f659c85b7a31a63a<br /><br />	※ 簡単な設定は、~$ crontab -e で以下のコマンドを書く。<br />	(redmineのディレクトリが /home/rails/redmine だとして。)<br />	@reboot (cd /home/rails/redmine &amp;&amp; ruby script/server -e production -p 3000 -d) <br /><br />	------------<br /><br />	「複雑」http://rubyist.g.hatena.ne.jp/muscovyduck/20070402/p1<br /><br />	※ 注意：下記の命令でconfig/mongrel_cluster.ymlファイル生成する。<br /><br />	mongrel_rails cluster::configure \<br />	 -e production -p 3000 -a 0.0.0.0 -l /home/rails/redmine/log/mongrel.log \<br />	 -P /var/run/mongrel/redmine.pid -c /home/rails/redmine \<br />	 -r /home/rails/redmine/public -N 1 --user rails --group www-data<br /><br />	※ "extconf.rb:1:in `require': no such file to load -- mkmf (LoadError)"エラーが<br />	　　が発生すると、下記のURLの5. Troubleshootingを参考して解決する。<br /><br />	　　ヒント) apt-get install ruby1.8-dev<br /><br />	※ /etc/init.dに入れるScriptサンプルを検索、find / -name 'mongrel_cluster' -print<br /><br />	　　結果例）/usr/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/resources/mongrel_cluster<br /><br /><br /><br />エラー解決　（手順１と２の間）<br />==========<br /><br />※ "uninitialized constant Gem::GemRunner(NameError)"のエラー対応 <br /><br />	参考 － http://d.hatena.ne.jp/bottleneck/20080112/1200135756<br /><br />	/usr/bin/gemの10行目(require 'rubygems'の下の行)に<br />	require 'rubygems/gem_runner'を追加する。<br /><br /><br />※ "rake aborted! No such file or directory - /tmp/mysql.sock"のエラー対応<br /><br />	参考 － http://crunchlife.com/articles/2007/10/06/rake-aborted-no-such-file-or-directory-tmp-mysql-sock<br /><br />	config/database.ymlのproductionセクションに下記の情報を追加。<br /><br />	socket: /var/run/mysqld/mysqld.sock<br /><br />	その後、ruby script/server -e productionでRUBYをSTOP。<br />	rake db:migrate RAILS_ENV="production" 命令で環境更新。<br />	その後、ruby script/server -e productionでRUBYを再起動。<br /><br /><br />※ DBへRedMine情報する際、文字化け問題。<br /><br />	config/database.ymlのproductionセクションに下記の情報を追加。<br /><br />	encoding: utf8 <br /><br />	例）<br />	  production:<br />	  adapter: mysql<br />	  database: redminedb<br />	  host: localhost<br />	  username: redmineuser<br />	  password: redminepasswd<br />	  encoding: utf8 <br /><br />	その後、ruby script/server -e productionでRUBYをSTOP。<br />	rake db:migrate RAILS_ENV="production" 命令で環境更新。<br />	その後、ruby script/server -e productionでRUBYを再起動。<br /><br /><br />※ メール送信ができない場合。<br /><br />	参考 － http://redmine.jp/faq/general/mail_notification/<br /><br />	config/environment.rbのSMTP設定にある<br />	:authentication, :user_name, :passwordをコメントアウトしてみてください。<br /><br />	その後、ruby script/server -e productionでRUBYをSTOP。<br />	rake db:migrate RAILS_ENV="production" 命令で環境更新。<br />	その後、ruby script/server -e productionでRUBYを再起動。<br /><br /><br /><br />※ RedMineの日本語化問題はまだ解決しない状態。<br /><br />emm-dev:/home/dev/redmine# rake load_default_data RAILS_ENV="production"<br />(in /home/dev/redmine-0.6.3)<br /><br />Select language: bg, cs, de, en, es, fr, he, it, ja, ko, nl, pl, pt, pt-br, ro, ru, sr, sv, zh, zh-tw [en] ja<br />====================================<br />Loading default configuration data for language: ja<br />Error: Mysql::Error: #HY000Illegal mix of collations (sjis_japanese_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation '=': SELECT * FROM roles WHERE (roles.name = '管理 者')  LIMIT 1<br />Default configuration data can't be loaded.<br /><br />Note: The rake task load_default_data has been deprecated, please use the replacement version redmine:load_default_data<br />emm-dev:/home/dev/redmine# rake load_default_data RAILS_ENV="production"<br />(in /home/dev/redmine-0.6.3)<br /><br />Select language: bg, cs, de, en, es, fr, he, it, ja, ko, nl, pl, pt, pt-br, ro, ru, sr, sv, zh, zh-tw [en]<br />====================================<br />Loading default configuration data for language: en<br /><br />Note: The rake task load_default_data has been deprecated, please use the replacement version redmine:load_default_data<br /><br /><br /><br /><br /><br /><br />その他<br />======<br /><br />※ 臨時的なRailsの起動<br /><br />emm-dev:/home/dev/redmine# ruby script/server -e production<br />=&gt; Booting WEBrick...<br />=&gt; Rails application started on http://0.0.0.0:3000<br />=&gt; Ctrl-C to shutdown server; call with --help for options<br />[2008-10-10 11:47:07] INFO  WEBrick 1.3.1<br />[2008-10-10 11:47:07] INFO  ruby 1.8.5 (2006-08-25) [i486-linux]<br />[2008-10-10 11:47:07] INFO  WEBrick::HTTPServer#start: pid=17975 port=3000<br /><br /><br />※ gem environment 命令で環境確認。<br /><br />emm-dev:/usr/bin# gem environment<br />/usr/bin/gem:11:Warning: Gem::manage_gems is deprecated and will be removed on or after March 2009.<br />RubyGems Environment:<br />  - RUBYGEMS VERSION: 1.3.0<br />  - RUBY VERSION: 1.8.5 (2006-08-25) [i486-linux]<br />  - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8<br />  - RUBY EXECUTABLE: /usr/bin/ruby1.8<br />  - EXECUTABLE DIRECTORY: /usr/bin<br />  - RUBYGEMS PLATFORMS:<br />    - ruby<br />    - x86-linux<br />  - GEM PATHS:<br />     - /usr/lib/ruby/gems/1.8<br />     - /root/.gem/ruby/1.8<br />  - GEM CONFIGURATION:<br />     - :update_sources =&gt; true<br />     - :verbose =&gt; true<br />     - :benchmark =&gt; false<br />     - :backtrace =&gt; false<br />     - :bulk_threshold =&gt; 1000<br />  - REMOTE SOURCES:<br />     - http://gems.rubyforge.org/<br /><br /><br /><br /><br />以上です。			 ]]> 
		</description>

		<comments>http://isma44.egloos.com/4827088#comments</comments>
		<pubDate>Tue, 27 Jan 2009 13:52:54 GMT</pubDate>
		<dc:creator>혼수상태</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 스크립트 언어를 숨긴 이미지 파일을 업로드해서 원격 실행 ]]> </title>
		<link>http://isma44.egloos.com/4642630</link>
		<guid>http://isma44.egloos.com/4642630</guid>
		<description>
			<![CDATA[ 
  <br />2007년에 유명해진 보안 문제 하나를 기록해 둔다.<br /><br /><b>스크립트 언어를 숨긴 이미지 파일을 업로드해서 원격 실행되도록 하는 공격</b>이다.<br />http://japan.cnet.com/news/sec/story/0,2000056024,20351284,00.htm<br />http://www.itmedia.co.jp/enterprise/articles/0706/20/news024.html<br /><br /><b>우선 현상 설명에 관한 자료이다. (일본어)<br /><a target="_blank" href="http://www.tokumaru.org/d/20071210.html#p01">画像ファイルによるクロスサイト・スクリプティング(XSS)傾向と対策</a><br />http://www.tokumaru.org/d/20071210.html#p01</b><br /><br /><br />아래는 예방책을 적어둔 글들이다.<br /><br />http://blog.ohgaki.net/c_ra_a_a_ia_ca_la_lphpa_sa_fa_a_a_a_effa<br />http://blog.ohgaki.net/a_sa_ma_oa_a_a_ca_sa_ma_la_fa_a_ei_a_ran<br />http://www.1x1.jp/blog/2007/06/php_exploite_code_in_gif.html<br />http://rockstock2008.blog17.fc2.com/blog-entry-9.html<br /><br />			 ]]> 
		</description>

		<comments>http://isma44.egloos.com/4642630#comments</comments>
		<pubDate>Mon, 29 Sep 2008 15:09:59 GMT</pubDate>
		<dc:creator>혼수상태</dc:creator>
	</item>
	<item>
		<title><![CDATA[ XAMPP v2.5 버전에서 ServerSignature, ServerTokens 표시/비표시 버그 관련 ]]> </title>
		<link>http://isma44.egloos.com/4642623</link>
		<guid>http://isma44.egloos.com/4642623</guid>
		<description>
			<![CDATA[ 
  XAMPP v2.5 버전에서 ServerSignature, ServerTokens 표시/비표시 관련.<br /><br />XAMPP (이하 쟘프) 는 아주 편리한 Apache, MySQL, PHP, Perl 패키지이다. 리눅스용도 윈도우즈용도 있고, 몇 년 전부터는 Tomcat 이나 여러 DB를 모두 수용하고 있다.<br /><br />손으로 이 모두를 별개 설치하면 하루 종일 걸릴 것을 이 패키지는 단 20분 만에 해결한다. 안정성 및 속도도 나쁘지 않고, 각종 부가 옵션 및 플러그인도 기본 장착이 돼 있으니 개발 단계에서는 그야말로 화려한 불꽃 기관총 받침대이다(표현이 좀 그렇다?!).<br /><br />이 쟘프의 단점이 하나 있는데, 실제 서비스로 돌리기에는 보안성이 떨어진다. 그도 그럴 것이 너무 많은 옵션을 풀어놓았기 때문이다. 예를 들어 404나 500 등의 HTTP 에러 상황에서 보이는 서버의 버전이나 각종 정보들이 풀로 다 나타난다.<br /><br />이 서버의 버전이나 각종 정보들은 ServerTokens 혹은 ServerSignature 라고 부르는데... 이를 숨기는 것이 안전하다. 이와 관련한 httpd.conf 수정법을 소개한다.<br /><br />쟘프의 conf/extra/httpd.default.conf 를 열어서 <br /><br /># only display 'apache'<br />ServerTokens Prod<br /><br /># do not display additional information<br />ServerSignature Off<br /><br />위와 같이 해당 옵션을 오프나 간단한 내용출력 항목으로 바꾸면 된다. 그런 후 아파치를 재기동하면 서버의 각종 버전 정보가 보이지 않게 된다.<br /><br />안심이다.<br /><br />* 참고로 기본적인 쟘프의 아파치 설정 파일은 conf/httpd.conf 입니다만, 이 파일에 위 설정을 넣어도 나중에 httpd.default.conf가 다시 설정되니까 소용이 없다. 반드시 extra 폴더의 설정을 수정/재기동하자.			 ]]> 
		</description>

		<comments>http://isma44.egloos.com/4642623#comments</comments>
		<pubDate>Mon, 29 Sep 2008 15:07:47 GMT</pubDate>
		<dc:creator>혼수상태</dc:creator>
	</item>
</channel>
</rss>
