achor Empire - BLOG 권아처의 소소한 일상 - BLOG http://achor.net/board/blog/ Wed, 18 Dec 2024 04:20:05 +0900 FeedCreator 1.7.2 http://achor.net/v7.4/img/logo/aelogo48x48.gif achor Empire Logo http://achor.net/board/blog/ Feed provided by achor Empire. Click to visit. jQuery를 활용한 XML data island 변경 http://achor.net/board/blog/10 2000년 초반 유행한 XML data island.<br /> <br /> XML 형식의 data를 직접 컨트롤 할 수 있어서 간단하게 소식을 전하기엔 매우 편리하긴 했지만<br /> IE 밖에 지원하지 않는 치명적인 단점이 있었지요.<br /> <br /> 결국 웹표준이 중시되는 지금에 와서는<br /> MS 또한 지원을 공식적으로 중단하여<br /> IE10부터는 IE에서조차 사용이 불가능 해졌습니다.<br /> <a href=http://msdn.microsoft.com/ko-kr/library/ie/hh801224(v=vs.85) target=_blank>http://msdn.microsoft.com/ko-kr/library/ie/hh801224(v=vs.85)</a><br /> <br /> 어디선가 XML data island 방식의 게시판을 jQuery로 변환하는 걸 본 적은 있는 듯 한데<br /> 다시 찾으려니 쉽지 않아<br /> 짬을 내 후딱, 직접 만들어 보았습니다.<br /> 요즘 jQuery의 정교함에 새삼 놀라고 있기도 하여 연습 삼아.<br /> <br /> 물론 저는 단순 취미로 웹개발을 즐길 뿐, 전문적인 개발자는 아니기에<br /> 코드의 수준은 매우 낮습니다.<br /> <br /> 곧 저와 같은 어려움을 겪은 분들이라면<br /> 참고는 하시되<br /> 코드는 직접 좀 더 세련되어 짜시길 추천 드립니다. -__-;<br /> <br /> <br /> <br /> 예전 XML data island의 코드는 아래와 같습니다.<br /> 10년 전 짠 코드라서 table로 틀을 잡고 있습니다. -__-;<br /> <script type="syntaxhighlighter" class="brush: xml"><![CDATA[<br /> <xml id='DSONOTICE' src='XML_DATA_FILE'></xml><br /> <table id='NOTICE' datasrc='#DSONOTICE' datapagesize='6' cellpadding='0' width='100%' border='0' align='center' style='table-layout: fixed;'><br /> <col width="100%"></col><col width='55'></col><br /> <tr><br /> <td width="100%" height='18px' nowrap='nowrap'><br /> <span datafld='cont'><br /> <br/><br/><br/>IE 전용 XML 데이터바인딩<br/><br/><br/><br/><br /> </span><br /> </td><br /> <td align='right'><span datafld='date'></span></td><br /> </tr><br /> <tr><br /> <td colspan='2' bgcolor='#cacaca' height='1'></td><br /> </tr><br /> </table><br /> <br /> <table width="100%" cellpadding='0' cellspacing='0' border='0' align='center'><br /> <tr><br /> <td width='50%' align='left'> &nbsp; <a href='#' onclick='NOTICE.previousPage()'>prev</a></td><br /> <td width='50%' align='right'><a href='#' onclick='NOTICE.nextPage()'>next</a> &nbsp; </td><br /> </tr><br /> </table><br /> ]]></script><br /> <br /> <br /> 일단 html 내 코드는 아래와 같이 바꿨습니다.<br /> 6줄씩 표현하고 있어서 cont0부터 cont5까지 id를 부여했고,<br /> 이전, 다음 페이지를 계산하기 위해 xmlpagepnum, xmlpagennum으로 hidden값을 부여해 놨습니다.<br /> <script type="syntaxhighlighter" class="brush: xml"><![CDATA[<br /> <table cellpadding='0' width='100%' border='0' align='center' style='table-layout: fixed;'><br /> <col width="100%"></col><col width='55'></col><br /> <?php<br /> for($i=0;$i<6;$i++) {?><br /> <tr><br /> <td width="100%" height='18px' nowrap='nowrap'><br /> <span id='cont<?=$i?>'><br /> </span><br /> </td><br /> <td align='right'><br /> <span id='date<?=$i?>'></span><br /> </td><br /> </tr><br /> <tr><br /> <td colspan='2' bgcolor='#cacaca' height='1'></td><br /> </tr><?php<br /> }<br /> ?><br /> </table><br /> <div style='display:none;'><input id='xmlpagepnum' type='hidden' value='0' /><input id='xmlpagennum' type='hidden' value='0' /></div><br /> <br /> <table width="100%" cellpadding='0' cellspacing='0' border='0' align='center'><br /> <tr><br /> <td width='50%' align='left'> &nbsp;&lt; <a href='#' onclick='acxmlboard(1)'>prev</a></td><br /> <td width='50%' align='right'><a href='#' onclick='acxmlboard(2)'>next</a> &gt;&nbsp; </td><br /> </tr><br /> </table><br /> ]]></script><br /> <br /> <br /> 다음 javascript function을 2개 만들었는데,<br /> acxmlboard는 레퍼런스처럼 제공되는 jQuery의 DOMParser 모델을 차용하여<br /> xml file을 읽어 구조화 하였고,<br /> <script type="syntaxhighlighter" class="brush: js"><![CDATA[<br /> function acxmlboard(a) {<br /> jQuery.ajax({<br /> type: "GET",<br /> url: "XML_DATA_FILE", <br /> dataType: "xml",<br /> <br /> success: function( xmlDoc, status )<br /> {<br /> processXMLDoc( xmlDoc, a );<br /> },<br /> complete: function( xhr, status )<br /> {<br /> if( status == 'parsererror' )<br /> {<br /> alert( "There was a PARSERERROR. Luckily, we know how to fix that.\n\n" +<br /> "The complete server response text was " + xhr.responseText ) ;<br /> <br /> xmlDoc = null;<br /> <br /> if( window.DOMParser )<br /> {<br /> parser=new DOMParser();<br /> xmlDoc=parser.parseFromString( xhr.responseText,"text/xml" ) ;<br /> }<br /> else // Internet Explorer<br /> {<br /> xmlDoc=new ActiveXObject( "Microsoft.XMLDOM" ) ;<br /> xmlDoc.async = "false" ;<br /> xmlDoc.loadXML( xhr.responseText ) ;<br /> }<br /> <br /> processXMLDoc( xmlDoc, a ) ;<br /> }<br /> },<br /> error: function( xhr, status, error )<br /> {<br /> alert( 'ERROR: ' + status ) ;<br /> alert( xhr.responseText ) ;<br /> }<br /> });<br /> }<br /> ]]></script><br /> <br /> <br /> processXMLDoc function으로<br /> xml data를 각 요소별로 지정된 위치에 표현하였습니다.<br /> 맨 처음, 맨 마지막 페이지를 고려하여 페이지 이동을 설정하였고요. <br /> <script type="syntaxhighlighter" class="brush: js"><![CDATA[<br /> function processXMLDoc( xmlDoc, a )<br /> {<br /> var j=0;<br /> if(a==1) var x=$("#xmlpagepnum").val();<br /> else var x=$("#xmlpagennum").val();<br /> if(x<0) x=0;<br /> var z=x*6;<br /> for (var i=z; i<z+6; i++)<br /> {<br /> var heading = $(xmlDoc).find('date:eq('+i+')').text() ;<br /> var bodyText = $(xmlDoc).find('cont:eq('+i+')').text() ;<br /> $( '#cont'+j).empty() ;<br /> $( '#date'+j).empty() ;<br /> $( '#cont'+j).append(bodyText) ;<br /> $( "#date"+j).append(heading) ;<br /> j++;<br /> }<br /> if($(xmlDoc).find('cont:eq('+i+')').text()) {<br /> var prev=x-1;<br /> var next=++x;<br /> }else {<br /> var prev=x-1;<br /> var next=x;<br /> }<br /> $( "#xmlpagepnum").val(prev);<br /> $( "#xmlpagennum").val(next);<br /> }<br /> ]]></script><br /> <br /> <br /> 완성된 화면은<br /> <a href=http://empire.achor.net target=_blank>http://empire.achor.net</a> 화면 좌측 상단의 News를 통해 확인하실 수 있습니다.<br /> <br /> 공개하기엔 코드가 너무 지저분 하고, 수준 낮습니다만 (함수명이나 변수명도 대충 막 정해져 있고, -__-;)<br /> 이제는 쓰지 않아 반드시 변화가 필요함에도<br /> 한국어로 된 XML data island에 대한 정보가 너무 없어 일단 적어둡니다.<br /> <br /> 누군가에겐 도움이 되시길.<br /> <br /> - achor achor jQuery XML 웹개발 프로그래밍 Sat, 16 Nov 2013 22:50:04 +0900 주파수 경매 http://achor.net/board/blog/9 최근 모바일 광개토플랜이라 불리며, 몇 달에 거쳐 커다란 이슈가 되었던 주파수 경매에 관하여 간략히 요약 드립니다.<br /> &nbsp;<br /> <strong>3줄 요약:</strong><br /> <ul> <li> <strong>KT는 인접 주파수를 획득하여 향후 최고의 서비스 품질을 구현할 수 있게 됨</strong></li> <li> <strong>SKT는 KT의 절반 비용에 1.8MHz를 확보하여 자금 경쟁력을 갖게 됨</strong></li> <li> <strong>LGU+는 저렴한 비용에 가장 넓은 대역폭을 확보하게 되어 당장은 아니더라도 차기에 기회를 모색할 수는 있음</strong></li> </ul> &nbsp;<br /> &nbsp;<br /> <p> <strong>1. 개요</strong></p> &nbsp;<br /> 먼저 개념부터 말씀 드리겠습니다.<br /> &nbsp;<br /> 이동통신을 위해 전파에 데이터를 실어 보내려면 특정 주파수의 사용 권리가 있어야 합니다.<br /> 이 주파수는 무한하지만 사용 기술에는 한계가 있어 실질적으로는 한정된 자원으로 분류됩니다.<br /> 주파수는 1초에 몇 번 진동하는 지를 나타내고, 예컨대 1.8GHz는 초당 18억 번 진동한다는 의미가 됩니다.<br /> &nbsp;<br /> 전선을 따라 흐르던 전류는 전선이 끊어진 부분에서 전기적 힘이 공간상으로 퍼지게 되는데,<br /> 빛처럼 직진하다가 산이나 건물을 만났을 때 반사되거나 투과하거나 장애물을 끼고 도는, 회절하기도 합니다.<br /> &nbsp;<br /> 핵심은 회절입니다.<br /> 전파는 주파수가 낮을수록 멀리 퍼지고, 회절성도 강합니다.<br /> 당연히 낮은 주파수가 좋지요.<br /> 다만 주파수의 용도는 국제기구인 국제전기통신엽합에서 정하고, 한국도 이를 따르고 있습니다.<br /> &nbsp;<br /> 0.3MHz 이하의 초장파, 장파는 해상통신, 표지통신, 선박-항공기의 유도 등 비상용으로 쓰이고 있고,<br /> 0.3~800MHz는 라디오나 텔레비전 방송용으로 주로 쓰입니다.<br /> 3GHz 이상의 높은 주파수는 회절성이 약해 우주관측이나 군사용 레이더 등에서 쓰이게 되고요.<br /> 이동통신용 주파수는 800MHz부터 시작하게 됩니다.<br /> &nbsp;<br /> 따라서 800MHz는 1.8GHz 보다 전파 도달거리가 길고, 회절성 또한 좋아 기지국이나 중계기를 덜 설치해도 되기에 좋습니다만<br /> 국제적으로 4G용 주파수를 1.8GHz~2.1GHz를 주로 사용하고 있기에<br /> 이번 경매에서도 1.8GHz에 대한 경쟁이 가장 치열하였습니다.<br /> &nbsp;<br /> &nbsp;<br /> <p> <strong>2. 경매방안</strong></p> &nbsp;<br /> 지난 6월 무렵 1안, 2안, 3안 등 안에 관한 이야기를 많이 들으셨을 것입니다.<br /> &nbsp;<br /> <a href="http://image.edaily.co.kr/images/photo/files/NP/S/2013/06/PS13062000361.jpg"><img src="/file/acwebs/upload/board/blog/201309/20130904_ps13062000361.jpg" style="border-bottom: 0px solid; border-left: 0px solid; border-top: 0px solid; border-right: 0px solid" /></a><br /> &nbsp;<br /> 경매를 어떻게 하느냐,가 초미의 관심사였는데<br /> 이는 KT가 확보하고 있는 1.8MHz 영역과 D블록이 인접하고 있기 때문이었습니다.<br /> &nbsp;<br /> 상기 그림에서 KT가 D블록을 확보하게 된다면 1.8MHz 영역에서 광대역을 확보할 수 있어서<br /> 광대역 LTE 서비스를 즉각적으로 시작할 수 있기 때문이지요.<br /> &nbsp;<br /> 최근 이야기 되는 LTE-A는 2개 이상의 주파수를 CA(Carrier Aggregation)로 묶어 사용하는 기술로,<br /> 속도는 광대력 LTE와 150Mbps로 비슷하지만<br /> LTE-A 전용 단말기를 다시 구매해야 하는 문제가 있습니다.<br /> 반면 광대력 LTE는 기존 LTE 폰으로도 그대로 속도 향상을 할 수 있는 장점이 있습니다.<br /> 배터리 사용효율에 있어서도 이득이 된다는 주장도 있고요.<br /> &nbsp;<br /> <img src="/file/acwebs/upload/board/blog/201309/20130904_201306201112247065611a_3.jpg" /><br /> &nbsp;<br /> 경매안은 최종적으로 4안으로 결정됩니다.<br /> 복잡한 조건들이 있긴 한데,<br /> 결과로 연결된 핵심적인 것들만 조금 나열하자면,<br /> <ul> <li> KT가 D2블록 확보 시 2014년 7월까지 광대역 LTE의 전국 서비스 제한</li> <li> SKT가 C2블록 확보 시 가지고 있던 1.8MHz 대역을 6개월 이내에 반납</li> </ul> 등입니다.<br /> &nbsp;<br /> &nbsp;<br /> <p> <strong>3. 결과</strong></p> &nbsp;<br /> <img src="/file/acwebs/upload/board/blog/201309/20130904_2013052001001864100104111.jpg" /><br /> &nbsp;<br /> 결과는<br /> KT가 D블록을, SKT가 C블록을, LGU+이 B블록을 가져가는 것으로 끝났습니다.<br /> &nbsp;<br /> KT는 광대역 LTE를 시작할 수 있어서 서비스적인 강점을 얻었고,<br /> SKT는 저렴한 비용으로 1.8MHz를 확보하였고, (기존 1.8MHz 반납으로 실질적으로 든 비용은 4530억원 정도)<br /> LGU+는 저렴한 비용에 가장 많은 80MHz의 대역폭을 갖게 돼<br /> 삼사 모두 승리자다,라고 이야기 되는 결과입니다.<br /> &nbsp;<br /> <ol style="list-style-type: upper-alpha"> <li> <em>KT : D</em><em>블록 1.8GHz(15MHz), 9001억원<br /> 일단 한시름 놨지만, 이거 제대로 산 건지 잘 모르겠어. 15MHz 대역폭을 받는 데 9천억원이나 쓰다니, 요즘 적자인데 너무 많이 썼나? 1조원은 안 넘겼으니 비싸게 주고 산 건 아닐거야. SK텔레콤은 2배나 넓은 35MHz 대역을 나보다 1500억원 더 쓴 1조500억원에, LG유플러스는 40MHz를 4788억원에 가져갔어. 뭔가 손해보는 느낌이 없진 않지만, 꼭 갖고 싶던 주파수였으니 마음만은 기뻐.<br /> 괜찮아. 속도를 높이기 위해 기지국을 더 세우지 않아도 되니, 이 주파수의 효과를 감안하면 사실 1조원도 아깝지 않아. 기지국 한 번 까는 것도 힘들었는데 어떻게 이걸 또 몇 달만에 깔아? 차라리 주파수를 사는 게 나았지. 더 높게 불러야 하나 싶어 밤잠을 못 잤는데, 다행이야. 막판에 은근슬쩍 밴드플랜2로 넘어와 1.8GHz 주파수를 싸게 가져간 SK텔레콤 녀석들은 밉지만, 덕분에 나도 더 비싸게 사진 않았으니 조금은 고맙기도 해.<br /> 어쨌든 그동안 손 놓고 있던 150Mbps 짜리 LTE를 남들보다 더 쉽게 시작할 수 있게 됐어. 가입자 절반이 몰려 있는 수도권은 제한이 없으니 9월부터 바로 광대역을 시작할 생각이야. 2014년 7월까지는 전국에서 쓰지 못하는 건 안타깝지만, 일단 수도권 지역에서는 시작하니 남들보다 더 빠른 LTE라고 광고해도 문제는 없겠지? 그 동안 이 황금 주파수를 별 것 아니라고 깎아내리면서 사실 입이 간질간질했다고. 빨리 말하고 싶어. &ldquo;여러분, KT의 LTE는 특별해요. 갤럭시S3나 아이폰5도 75Mbps가 아니라 100Mbps 속도로 가장 빨라요~! 하하하.&rdquo;<br /> 이제 다음 차례는 900MHz야. 광대역 주파수 때문에 LTE 어드밴스드의 우선순위를 조금 미뤄 두었지만, 이제 이것만 붙이면 우리는 기본 150Mbps, 최고 225Mbps의 속도를 내는 수퍼 LTE가 된다고. 참, 여러분! 데이터 2배 혜택은 10월말까지예요, 리얼리~.</em></li> </ol> &nbsp;<br /> <ol style="list-style-type: upper-alpha"> <li value="2"> <em>SK</em><em>텔레콤 : C블록 1.8GHz(35MHz), 1조500억원<br /> 자&hellip;잠깐. 표정관리부터 하고. 흠흠, 그것 봐. 누가 LG유플러스랑 짜고 경매에 들어간다고 그랬어? 우리도 실속을 챙길 수밖에 없는 사업자라고. 원래 짜고 시작했던 것도 아니고 LG유플러스를 배신하려고 했던 것도 아니야. 여러 상황으로 봐서 우리로도 최선을 다한 경매였어. 이것도 사업이니, 부디 날 욕하지 말아줘.<br /> 2.6GHz든 1.8GHz든, 뭘 할당아도 어차피 둘 다 주력 주파수(850MHz)와 묶어 쓰려면 캐리어 어그리게이션을 해야 했어. KT처럼 주력 주파수에 묶는 건 물리적으로 어려우니 보조 주파수라도 좋은 게 필요했거든. 하지만 오해는 말아줘. 1.8GHz가 LG유플러스에게 필요했다는 말은 진심이었어. 다만 경쟁이 너무 과열되면서 주파수 가격이 천정부지로 오르는 것을 막아야 했기에 울며 겨자먹기로 KT쪽의 밴드플랜으로 바꿀 수밖에 없었다고.<br /> 갑자기 1.8GHz로 바꾼 이유가 궁금해? LG유플러스에게 1.8GHz를 줘야 한다는 건 밴드플랜1로 가져가야 한다는 이야기였을 뿐이야. 밴드플랜2로 마음을 돌렸으니 이야기는 새로 시작되는 거라고. 우리는 원래 1.8GHz로 전국에 기지국을 깔고 있는데, 이왕이면 기지국을 처음부터 새로 깔아야 하는 2.6GHz보다는 이미 깔아둔 1.8GHz의 주파수를 조정해서 쓰면 비용이 줄어들지 않겠어? LG유플러스는 우리가 반납할 20MHz 대역 1.8GHz를 할당해주면 되겠네.<br /> 어쨌든 주력망에서 주파수만으로 150MHz 속도의 LTE 서비스를, 그것도 전국망으로 할 수 있게 된 KT를 보면 배가 아픈 게 사실이야. 그래도 황금 주파수를 비교적 싸게 샀으니 우리도 손해볼 것도 없어. 정말이야. 나 좋아서 웃는 거 아니야. 그냥 살짝 간지러워서 그래.</em></li> </ol> &nbsp;<br /> <ol style="list-style-type: upper-alpha"> <li value="3"> <em>LG</em><em>유플러스 : B블록 2.6GHz(40MHz), 4788억원<br /> 1.8GHz가 없어도 괜찮아. 나는 원래 &lsquo;유니크&rsquo;한 주파수에 익숙해. 미래부가 나한테 2.6GHz는 아무도 쓰지 않았던 &lsquo;청정 주파수&rsquo;라고 귀띔해 줬어. 뭐든 새 것이 좋은 것 아니겠어? 쩝.<br /> 그래도 그동안 SK텔레콤이 사람들을 모아 놓고 나도 잘 살아야 한다며, 그러려면 1.8GHz 주파수가 필요하다고 이야기해 줘서 고마웠어. 그 주파수를 SK텔레콤이 덥석 가져가긴 했지만, 일부러 그런 건 아닐거야. 나에게 차세대 글로벌 주파수인 2.6GHz를 주려고 그랬던 거였겠지? 근데 다른 나라들은 2.6GHz를 언제부터 차세대 주파수로 쓴대? 혹시 내가 제일 먼저 산 건 아니지?<br /> 2.6GHz는 40MHz니 이전에 갖고 있던 850MHz, 2.1GHz의 20MHz와 합치면 80MHz로 우리가 제일 많은 주파수를 갖고 있다고. 남들보다 더 빠른 300(75&times;4)Mbps의 빠른 속도로 LTE-A 서비스를 할 수 있게 됐어. 기지국을 하나 더 세워야 하지만 말이야. 전국망 LTE 두 번 깔아봤는데, 세 번이라고 못하겠어? 기지국 깔 돈은 이제부터 벌어야지. 누구, 2.6GHz 주파수 기지국 세워본 적 있어?<br /> 아, 눈 화장이 번졌다고? 가을이 오니까 알레르기가 심해졌네. 난 괜찮아. 정말 괜찮아. 나는 100% LTE니까.</em><br /> <br /> <em>http://www.bloter.net/archives/162992 (bloter.net </em><em>최호섭)</em></li> </ol> &nbsp;<br /> &nbsp;<br /> <p> <strong>4. 사설</strong></p> &nbsp;<br /> 비록 통상적으로 이통사를 바꾸는 경우에는 폰까지 함께 교체하는 경우가 많은 한국 상황이기에<br /> KT가 광대역 LTE를 시작한다 해도 직접적인 KT의 가입자 증대로 연결되는 데에는 제약이 있겠지만<br /> 서비스 품질을 무기로 고객 커뮤니케이션 하기엔 역시 KT가 가장 좋은 결과가 아닐까 싶긴 합니다.<br /> 또한 기존 9000Mhz의 간선 문제로 타 경쟁사와는 달리 LTE-A 서비스를 못하고 있던 상황이기에 커다란 과제를 해결한 셈이기도 하겠고요.<br /> 실제로 주가 또한 KT 상승, SKT 혼조, LGU+ 하락으로 나타나고 있기도 합니다.<br /> &nbsp;<br /> 저도 곧 2년 약정이 끝날 것인데, KT로의 이동을 고려하고 있습니다.<br /> 광대역 LTE에 LTE-A가 결합된다면 역시, 서비스 품질은 최고가 아닐까 싶네요.<br /> &nbsp;<br /> 다만 이번에 가장 적은 비용으로 큰 효과를 가져간 SKT가<br /> 무제한 데이터를 저렴하게 제공하는 등 비용적 측면으로 서비스를 강화한다면<br /> 고객 입장에선 큰 차이 나지 않는 품질에서 SKT를 선택할 수도 있겠습니다.<br /> &nbsp;<br /> LGU+은 기지국 부담이 있어 이용요금으로 싸우기에 버겁긴 할텐데 지금껏 그래왔듯 감수할 가능성도 높아 보이고요.<br /> <br /> - achor achor 주파수 이동통신 전파 SKT KT LGU 휴대폰 Wed, 04 Sep 2013 09:08:40 +0900 Facebook은 영원할 것인가? http://achor.net/board/blog/8 많은 기업들에 있어서 Facebook은<br /> 여전히 낙관론과 대세론으로 가득 차 있는 것 같습니다.<br /> <br /> 디지털마케팅 플랫폼을 구축하는 측면에서는 Spokesman이나 Friendly Employee 등의 역할을 부여하여 고객과 소통하는 최상위 채널로써,<br /> 온라인 VOC를 관리하는 측면에서는 Brand Advocate을 양성하기 위한 주요 커뮤니케이션 장으로써<br /> Facebook을 검토하는 사례가 많아졌고,<br /> 심지어 F-Commerce라 하여 Facebook을 직접적인 상거래의 수단으로 활용코자 하는 기업도 생겨나고 있습니다.<br /> <br /> 그러나 가만히 상기해 본다면<br /> Twitter가 화려한 조명을 받으며 정치, 경제, 사회, 문화를 아우르는 새로운 커뮤니케이션의 핵심인 것처럼 이야기 됐던 게 불과 1~2년 전이었습니다.<br /> 곧 당연하게도 Facebook의 현재가 Facebook의 미래를 담보하지는 않을 것입니다.<br /> <br /> 근래 Facebook의 미래에 대하여 부정적인 전망들도 나오고 있어서<br /> 간략히 이를 소개하고자 합니다.<br /> <br /> <br /> <br /> 지난 5월 17일 소셜베이커스닷컴이 공개한 자료에 따르면<br /> 국내 Facebook의 경우엔 두 달 연속으로 가입자 수가 감소하고 있습니다.<br /> <br /> <img src='https://achor.net/file/acwebs/upload/board/dm_article/201105/20110520_image_readtop_2011_313456_1305620560424835.jpg' width='250' alt='Facebook은 영원할 것인가?' name='ac_target_resize' /></a><br /><br /> <br /> 그간 접속 제한돼 있던 중국 이용자들이 한국을 우회하여 Facebook을 이용하여 왔으나<br /> Facebook을 모방한 중국 고유의 '런런'이 인기를 끌며서 자국 서비스로 옮겨 간 게 가장 큰 원인으로 예측됩니다.<br /> <br /> 데이터로 보더라도<br /> 대한민국을 거주지로 택하고, 중국어를 언어로 택한 18세 이상 Facebook 가입자의 경우<br /> 1월 말엔 159만 명에 이르렀지만 현재는 16만 명 수준으로 엄청나게 급감했음을 알 수 있습니다.<br /> <br /> 물론 이것은 실제 한국인의 Facebook 이용 실태와 전혀 무관한 데이터이긴 하지만<br /> 동시에 분명한 건<br /> 적어도 한국의 Facebook 이용 실태에 그간 중국인의 거품이 어느 정도 있어 왔다, 하는 점이겠습니다.<br /> <br /> <a href=http://prby.me/19 target=_blank>http://prby.me/19</a><br /> <br /> <br /> <br /> 지난 5월 30일 자 Newsweek지에서는 Facebook의 버블 가능성이 직접적으로 제기되기도 하였습니다.<br /> <br /> Facebook이 가진 건 데이터와 회원 뿐인데<br /> (1) 데이터만으로는 큰 가치를 지닌다고 말할 수 없고,<br /> (2) Facebook이 그간 이 데이터를 기반으로 수억 달러 가치의 소프트웨어 알고리즘을 만들겠다고 공언해 왔지만 실제 성사 여부는 미지수 라는 것,<br /> (3) 회원 또한 그간 AOL이나 마이스페이스 등에서 그래왔듯이 사람들은 한 곳에 잠시 머물다가 다른 곳으로 옮겨가게 된다는 점을<br /> 그 근거로 하였습니다.<br /> <br /> 지금까지는 누구보다 잘 해왔던 게 사실이긴 하나<br /> 데이터를 기반으로 한 광고 이외의 수익 창출에 실패하는 내부적 요인과<br /> 그 어느 곳도 장기적으로 대중을 사로잡아 온 역사가 없다는 외부적 요인에 의해<br /> Facebook 또한 또 다른 무언가로 대체될 가능성은 있다 하겠습니다.<br /> <br /> 특히 Facebook은 Google과 같이 쉽게 따라하기 어려운 기술적 기반 위에서 존재하는 공간이 아니라<br /> 붐이 만들어 낸 사용량에 근간을 두고 있기에 사상누각이 될 가능성은 상대적으로 크다 할 수 있습니다.<br /> <br /> <a href=http://prby.me/20 target=_blank>http://prby.me/20</a><br /> <br /> <br /> <br /> 정리하자면<br /> 단기적으론 전 세계적으로 워낙 강세인 만큼 Facebook 활용 전략을 준비하는 게 충분히 의미 있을 수 있으나<br /> 장기적으론 고객이 있는 새로운 장을 빨리 찾아내고, 그곳에서 고객과 소통할 수 있는 방법론과 대응체계를 구축하는 게 효과적이겠습니다.<br /> <br /> - achor achor Facebook SNS MicroBlog Twitter social Mon, 06 Jun 2011 12:43:49 +0900 Google +1 Button http://achor.net/board/blog/7 <img src='http://achor.net/file/acwebs/upload/board/blog/20110602_googleplus1button.gif' /><br /> 오늘 새벽,<br /> Google로부터 드디어 +1 버튼이 준비됐다고 메일이 왔더군요.<br /> <br /> +1 버튼은 Facebook의 Like 버튼과 비슷한 Google의 Social Button입니다.<br /> <br /> <fieldset><br /> Hi there,<br /> <br /> You asked to be notified when the +1 button code was available, and today's the day!<br /> <br /> The +1 button makes it easy for visitors to recommend your pages to friends and contacts exactly when their advice is most useful -- on Google search. As a result, you could get more and better qualified site traffic.<br /> <br /> You'll need to add a small snippet of code on the pages where you want a +1 button to appear. Ready to get started?<br /> <br /> To stay current on updates to the +1 button large and small, please sign up for the Google Publisher Button Announce Group.<br /> <br /> If you have questions when adding the code, check out the Google Webmasters Help Center. Thanks for your interest!<br /> <br /> Sincerely,<br /> The Google Webmaster Central & +1 button teams <br /> </fieldset><br /> <br /> <br /> 아직은 +1 버튼이 Google의 검색 결과에 직접적인 영향을 주지 않고 그저 검색결과의 옆에서 추가적인 정보만을 주고 있지만<br /> 향후엔 검색 알고리즘의 한 축으로써 반영될 가능성도 있습니다.<br /> 물론 검색광고인 AdWords에도 적용되고요.<br /> <br /> Google엔 이미 Social Button으로써 Google Buzz Button이 있습니다만<br /> 그 둘은 완전히 별개로, 둘 다 쓴다 해도 별 이상은 없습니다.<br /> <br /> 아직은 실험실 차원에서 진행되고 있기에<br /> +1 버튼을 직접 보기 위해서는 몇 가지 전제 조건을 따라야 합니다.<br /> <br /> 1. Google 계정 로그인<br /> 2. Google Profile 작성<br /> 3. <a href=http://www.google.com/experimental/ target=_blank>http://www.google.com/experimental/</a> Google Labs에서 +1 button 활성화<br /> 4. <a href=http://www.google.com/ncr target=_blank>http://www.google.com/ncr</a> 영문검색<br /> 5. 검색결과에 +1 버튼 확인<br /> <br /> <br /> +1 버튼을 직접 달기 위해선 아래 URL에서 코드를 받아 해당 웹페이지에 입력하시면 됩니다.<br /> <a href=http://www.google.com/webmasters/+1/button/ target=_blank>http://www.google.com/webmasters/+1/button/</a><br /> <br /> 참고로,<br /> 제가 만든 앗싸좋구나 버튼이 Google의 +1 버튼보다 선배이며,<br /> 앗싸좋구나 버튼은 아래 URL에서 코드를 받아 사용하실 수 있습니다.<br /> <a href=http://empire.achor.net/diary/1453 target=_blank>http://empire.achor.net/diary/1453</a><br /> <a href=http://prby.me target=_blank>http://prby.me</a><br /> <br /> - achor achor Google social 좋아요 버튼 prby.me AdWords Buzz Fri, 03 Jun 2011 02:22:29 +0900 CKFinder 한글파일명 문제 해결 방법 http://achor.net/board/blog/6 지난 포스팅에서 CKFinder를 활용하여 웹앨법이나 자료실 만드는 법을 살펴 보았습니다.<br /> <a href=http://empire.achor.net/blog/3 target=_blank>http://empire.achor.net/blog/3</a><br /> <br /> 추가적으로,<br /> Windows 계열의 서버에서 php 버전의 CKFinder를 이용할 시 한글 문제로 고생하시는 분들이 많아<br /> 해결책을 포스팅 합니다.<br /> <br /> <br /> 과거 FCKEditor 시절부터 Windows 계열의 서버에서는 한글 파일 문제가 쉽지 않았기에<br /> 직접 소스코드를 수정하는 등의 다양한 방법이 있었지만<br /> 대개의 경우 한글 파일명을 임의의 영문과 숫자 파일명으로 변경하는 등의 부차적인 방법이었던 면이 있어 왔습니다.<br /> <br /> CKFinder로 버전업 된 이후에도 그러한 방법이 횡횡하고 있습니다만<br /> 사실 설정을 통해 이를 손쉽게 해결할 수 있습니다.<br /> <br /> <br /> config.php 파일 내에 다음과 같은 코드를 삽입하시면 됩니다.<br /> <pre class="brush: php;"><br /> $config['FilesystemEncoding']='CP949';<br /> </pre><br /> 웹페이지들이 UTF-8 등을 사용한다고 해도 상관 없습니다.<br /> Windows 계열 시스템에서 한글 파일명에 사용하는 CP949 character set을 통해<br /> 실제 시스템에 파일이 존재하는지 체크하고, 썸네일이 없다면 생성 등의 작업을 수행할 수 있게 됩니다.<br /> <br /> <br /> 한국어 외에 타 언어의 Windows 계열 character set은 아래를 참고 하십시오.<br /> <TABLE border='1'><TR><TH> &#009;&#009;&#009;&#009;&#009;&#009; Language&#009;&#009;&#009;&#009;&#009;&#009;</TH><TH> &#009;&#009;&#009;&#009;&#009;&#009; Windows character set&#009;&#009;&#009;&#009;&#009;&#009;</TH></TR><TR><TD> &#009;&#009;&#009;&#009;&#009;&#009; English&#009;&#009;&#009;&#009;&#009;&#009;</TD><TD> &#009;&#009;&#009;&#009;&#009;&#009; cp1252&#009;&#009;&#009;&#009;&#009;&#009;</TD></TR><TR><TD> &#009;&#009;&#009;&#009;&#009;&#009; French&#009;&#009;&#009;&#009;&#009;&#009;</TD><TD> &#009;&#009;&#009;&#009;&#009;&#009; cp1252&#009;&#009;&#009;&#009;&#009;&#009;</TD></TR><TR><TD> &#009;&#009;&#009;&#009;&#009;&#009; German&#009;&#009;&#009;&#009;&#009;&#009;</TD><TD> &#009;&#009;&#009;&#009;&#009;&#009; cp1252&#009;&#009;&#009;&#009;&#009;&#009;</TD></TR><TR><TD> &#009;&#009;&#009;&#009;&#009;&#009; Italian&#009;&#009;&#009;&#009;&#009;&#009;</TD><TD> &#009;&#009;&#009;&#009;&#009;&#009; cp1252&#009;&#009;&#009;&#009;&#009;&#009;</TD></TR><TR><TD> &#009;&#009;&#009;&#009;&#009;&#009; Japanese&#009;&#009;&#009;&#009;&#009;&#009;</TD><TD> &#009;&#009;&#009;&#009;&#009;&#009; cp932 (Shift-JIS)&#009;&#009;&#009;&#009;&#009;&#009;</TD></TR><TR><TD> &#009;&#009;&#009;&#009;&#009;&#009; Korean&#009;&#009;&#009;&#009;&#009;&#009;</TD><TD> &#009;&#009;&#009;&#009;&#009;&#009; cp949&#009;&#009;&#009;&#009;&#009;&#009;</TD></TR><TR><TD> &#009;&#009;&#009;&#009;&#009;&#009; Lithuanian&#009;&#009;&#009;&#009;&#009;&#009;</TD><TD> &#009;&#009;&#009;&#009;&#009;&#009; cp1257&#009;&#009;&#009;&#009;&#009;&#009;</TD></TR><TR><TD> &#009;&#009;&#009;&#009;&#009;&#009; Polish&#009;&#009;&#009;&#009;&#009;&#009;</TD><TD> &#009;&#009;&#009;&#009;&#009;&#009; cp1250&#009;&#009;&#009;&#009;&#009;&#009;</TD></TR><TR><TD> &#009;&#009;&#009;&#009;&#009;&#009; Portuguese&#009;&#009;&#009;&#009;&#009;&#009;</TD><TD> &#009;&#009;&#009;&#009;&#009;&#009; cp1252&#009;&#009;&#009;&#009;&#009;&#009;</TD></TR><TR><TD> &#009;&#009;&#009;&#009;&#009;&#009; Russian&#009;&#009;&#009;&#009;&#009;&#009;</TD><TD> &#009;&#009;&#009;&#009;&#009;&#009; cp1251&#009;&#009;&#009;&#009;&#009;&#009;</TD></TR><TR><TD> &#009;&#009;&#009;&#009;&#009;&#009; Simplified Chinese&#009;&#009;&#009;&#009;&#009;&#009;</TD><TD> &#009;&#009;&#009;&#009;&#009;&#009; cp936&#009;&#009;&#009;&#009;&#009;&#009;</TD></TR><TR><TD> &#009;&#009;&#009;&#009;&#009;&#009; Spanish&#009;&#009;&#009;&#009;&#009;&#009;</TD><TD> &#009;&#009;&#009;&#009;&#009;&#009; cp1252&#009;&#009;&#009;&#009;&#009;&#009;</TD></TR><TR><TD> &#009;&#009;&#009;&#009;&#009;&#009; Traditional Chinese&#009;&#009;&#009;&#009;&#009;&#009;</TD><TD> &#009;&#009;&#009;&#009;&#009;&#009; cp950&#009;&#009;&#009;&#009;&#009;&#009;</TD></TR><TR><TD> &#009;&#009;&#009;&#009;&#009;&#009; Ukrainian&#009;&#009;&#009;&#009;&#009;&#009;</TD><TD> &#009;&#009;&#009;&#009;&#009;&#009; cp1251&#009;&#009;&#009;&#009;&#009;&#009;</TD></TR></TABLE><br /> References: <a href=http://www.ianywhere.com/developer/product_manuals/sqlanywhere/0902/en/html/dbdaen9/00000398.htm target=_blank>http://www.ianywhere.com/developer/product_manuals/sqlanywhere/0902/en/html/dbdaen9/00000398.htm</a><br /> <br /> - achor achor CKFinder 한글파일 웹개발 PHP CKEditor 웹앨범 Thu, 02 Jun 2011 01:07:46 +0900 meta tag를 통해 검색엔진 접근을 제한하는 방법 http://achor.net/board/blog/5 지난 robots.txt를 통해 검색엔진 접근을 제한하는 방법 <a href=http://empire.achor.net/blog/4 target=_blank>http://empire.achor.net/blog/4</a> 에 이은 2번째.<br /> <br /> robots.txt의 Disallow 설정을 통해<br /> 접근하지 말았으면 하는 디렉토리를 오히려 명시해야 해서 이를 악의적인 사람들이 악용할 수 있는 딜레마가 있었는데<br /> 그 대안 중 한 가지가 바로 이번에 설명하려는 meta tag를 통한 검색엔진 제한 설정법입니다.<br /> <br /> <br /> 용법은 간단합니다.<br /> head tag 내에 name은 검색엔진로봇명을, content는 명령어를 지정하여 삽입하면 됩니다.<br /> <pre class="brush: html;"><br /> &lt;head><br /> &lt;meta name="robots" content="noindex" /><br /> &lt;/head><br /> </pre><br /> <br /> name에 robots를 쓰게 되면 모든 robots을 대상으로 하게 되고,<br /> 그렇지 않고 googlebot 처럼 지정할 수도 있습니다.<br /> <pre class="brush: html;"><br /> &lt;head><br /> &lt;meta name="googlebot" content="noindex" /><br /> &lt;/head><br /> </pre><br /> <br /> 명령어로는<br /> NoIndex, NoFollow, NoArchive, NoSnippet, NoODP, NoYDIR, NoImageIndex, NoTranslate, Unavailable_After 등이 있으며,<br /> 검색엔진별로 적용되는 수준의 차이는 있습니다.<br /> <br /> NoIndex가 기본적으로 검색하지 말라는 명령어이고,<br /> NoFollow는 검색엔진으로 하여금 페이지에 존재하는 링크들에 관심을 갖지 않게 하는 명령어입니다. SEO의 순위선정 기법 중 Page Rank에 관련된 명령어이지요.<br /> NoArchive는 Cache 하지 못하게 하는 명령어입니다. google의 경우엔 스냅샷이 불가능해 집니다.<br /> NoSnippet은 요약을 표시하지 못하게 하고, 스탭샷링크도 연결 못하도록 합니다.<br /> NoODP는 Open Directory Project의 데이터를 반영하지 못하게 합니다. ODP의 설명문은 좀 old 하다는 이야기를 들어왔고, 그리하여 KWIC이나 Meta Description의 정보를 활용하도록 하는 것입니다.<br /> NoYDIR는 Yahoo의 디렉토리 설명을 표현하지 않도록 하는 명령어입니다.<br /> NoImageIndex는 이미지를 인덱스 하지 말라는 명령어이고,<br /> NoTranslate는 Google의 번역된 검색을 제공하지 말라는 명령어이며,<br /> Unavailable_After는 지정된 날짜까지만 검색을 허용한다는 명령어입니다.<br /> <br /> 위 명령어 중에는 Google이나 Yahoo가 독자적으로 만들어 낸 것도 있기에<br /> 모든 검색엔진들이 명령어대로 적합하게 반응하는 건 아닙니다.<br /> <br /> 적용 가능 여부는 아래의 표를 참조하세요.<br /> <br /> <table border='1'><tr> <th>Terms</th><th>Googlebot</th><th>Slurp</th><th>MSNBot</th><th>Teoma</th></tr><tr><td class="tal">NoIndex</td><td class="do"><a href="http://www.Google.com/support/webmasters/bin/answer.py?answer=35303" target="_blank">Yes</a></td><td class="do"><a href="http://Help.Yahoo.com/help/us/ysearch/slurp/slurp-04.html" target="_blank">Yes</a></td><td class="do"><a href="http://Search.Live.com/docs/siteowner.aspx?t=SEARCH_WEBMASTER_REF_RestrictAccessToSite.htm" target="_blank">Yes</a></td><td class="do"><a href="http://About.Ask.com/en/docs/about/webmasters.shtml#10" target="_blank">Yes</a></td></tr><tr><td class="tal">NoFollow</td><td class="do"><a href="http://www.Google.com/support/webmasters/bin/answer.py?answer=35303" target="_blank">Yes</a></td><td class="do"><a href="http://Help.Yahoo.com/help/us/ysearch/slurp/slurp-12.html" target="_blank">Yes</a></td><td class="do"><a href="http://Search.Live.com/docs/siteowner.aspx?t=SEARCH_WEBMASTER_REF_RestrictAccessToSite.htm" target="_blank">Yes</a></td><td class="do"><a href="http://About.Ask.com/en/docs/about/webmasters.shtml#10" target="_blank">Yes</a></td></tr><tr><td class="tal">NoArchive</td><td class="do"><a href="http://www.Google.com/support/webmasters/bin/answer.py?answer=35306" target="_blank">Yes</a></td><td class="do"><a href="http://Help.Yahoo.com/help/us/ysearch/basics/basics-10.html" target="_blank">Yes</a></td><td class="do"><a href="http://Search.Live.com/docs/siteowner.aspx?t=SEARCH_WEBMASTER_REF_RestrictAccessToSite.htm" target="_blank">Yes</a></td><td class="do"><a href="http://About.Ask.com/en/docs/about/webmasters.shtml#5" target="_blank">Yes</a></td></tr><tr><td class="tal">NoSnippet</td><td class="do"><a href="http://www.Google.com/support/webmasters/bin/answer.py?answer=35304" target="_blank">Yes</a></td><td class="donot">No</td><td class="donot">No</td><td class="donot">No</td></tr><tr><td class="tal">NoODP</td><td class="do"><a href="http://www.Google.com/support/webmasters/bin/answer.py?answer=35264" target="_blank">Yes</a></td><td class="do"><a href="http://Help.Yahoo.com/help/us/ysearch/indexing/indexing-11.html" target="_blank">Yes</a></td><td class="do"><a href="http://Blogs.MSDN.com/livesearch/archive/2006/05/22/603917.aspx" target="_blank">Yes</a></td><td class="donot">No</td></tr><tr><td class="tal">NoYDIR</td><td class="donot">No</td><td class="do"><a href="http://Help.Yahoo.com/help/us/ysearch/indexing/indexing-11.html" target="_blank">Yes</a></td><td class="donot">No</td><td class="donot">No</td></tr><tr><td class="tal">NoImageIndex</td><td class="do"><a href="http://www.google.com/support/webmasters/bin/answer.py?answer=79892" target="_blank">Yes</a></td><td class="donot">No</td><td class="donot">No</td><td class="donot">No</td></tr><tr><td class="tal">NoTranslate</td><td class="do"><a href="http://www.google.com/help/faq_translation.html#donttrans" target="_blank">Yes</a></td><td class="donot">No</td><td class="donot">No</td><td class="donot">No</td></tr><tr><td class="tal">Unavailable_After</td><td class="do"><a href="http://www.google.com/support/webmasters/bin/answer.py?answer=79812" target="_blank">Yes</a></td><td class="donot">No</td><td class="donot">No</td><td class="donot">No</td></tr></table><br /> References: <a href=http://noarchive.net/meta/ target=_blank>http://noarchive.net/meta/</a><br /> <br /> <br /> 기본적으로 미 지정 시 모두 허용의 판정을 받게 됩니다.<br /> 곧 &lt;meta name="robots" content="noindex, nofollow" />와 같이 필요한 사항을 모두 나열해 주어야 합니다.<br /> <br /> - achor achor SEO 검색엔진 bot meta Tue, 31 May 2011 23:38:13 +0900 robots.txt를 통해 검색엔진 접근을 제한하는 방법 http://achor.net/board/blog/4 robots.txt는 검색의 한계를 설정하는 파일입니다.<br /> <br /> 최근 한국 구글에서는 자체적으로 주민등록번호를 필터링 하여 검색되지 않도록 조치를 하기도 했지만<br /> admin 페이지 등 원치 않는 정보까지도 검색되어 문제가 되는 일은 종종 있어 왔습니다.<br /> <br /> 또한 과거 한국의 네이버나 중국의 바이두가 일본 웹검색 시장에 진출하며 과도한 크롤링으로 문제를 야기한 적도 있듯이<br /> 검색엔진의 잦은 크롤링은 서버의 성능 저하를 가져올 뿐더러 게시물의 과도한 조회수, 추천수 등과 같은 컨텐츠의 변형을 일으킬 수도 있습니다.<br /> <br /> robots.txt를 통하여 이러한 부분을 보완할 수 있는 것이지요.<br /> <br /> <br /> <br /> robots.txt는 반드시 도메인의 root에 존재해야 합니다.<br /> 하위 디렉토리에 있다면 검색엔진이 인식하지 못합니다.<br /> 즉 <a href=http://empire.achor.net/robots.txt target=_blank>http://empire.achor.net/robots.txt</a> 처럼 도메인 바로 뒤에서 연결이 가능해야 합니다.<br /> <br /> <br /> robots.txt의 기본적인 문법은,<br /> <br /> User-agent: 로 검색엔진을 지정하고, Disallow: 와 Allow: 로 한계를 설정합니다.<br /> <br /> * 는 길이 제한 없는 와이드카드이며,<br /> $는 URL의 종결을 의미합니다.<br /> <br /> 예를 들자면,<br /> <pre class="brush: html;"><br /> User-agent: *<br /> Disallow: /<br /> </pre><br /> 위와 같이 표현된 robots.txt는 모든 검색엔진에 대하여 / 이하를 Disallow 하라란 의미입니다.<br /> 즉 해당 도메인에 대하여 모든 검색이 차단되겠지요.<br /> <br /> 반대의 경우는<br /> <pre class="brush: html;"><br /> User-agent: *<br /> Allow: /<br /> </pre><br /> 라고 표현할 수 있겠네요.<br /> <br /> <br /> 조금 더 옵션을 넣어보자면,<br /> <pre class="brush: html;"><br /> User-agent: Googlebot<br /> Disallow: /*.jpg$<br /> User-agent: *<br /> Allow: /<br /> </pre><br /> 위의 예는 Googlebot에 대하여 jpg 파일들은 검색하지 말고, 그 외 다른 검색엔진들은 모든 검색을 허용한다는 의미가 되겠습니다.<br /> <br /> <br /> <pre class="brush: html;"><br /> User-agent: *<br /> Allow: /_*/<br /> Disallow: /*test*.html<br /> Disallow: /*?session<br /> Allow: /*?$<br /> </pre><br /> 그 외에도 *와 $를 넣어서 다양하게 구성할 수 있습니다.<br /> <br /> 또한<br /> <br /> Allow: /test 는 test로 시작하는 디렉토리 뿐만 아니라 test.html 등까지도 검색에서 배제되지만<br /> Allow: /test/ 는 test 디렉토리만 배제되는 차이가 있습니다.<br /> <br /> <br /> 주의해야 할 점은<br /> (1) User-agent, Allow, Disallow와 : 사이엔 공백이 없어야 하고,<br /> (2) :와 검색엔진명, 혹은 디렉토리와는 공백이 존재해야 합니다.<br /> (3) robots.txt는 상위 라인부터 차례로 설정해 감으로, 반드시 더 적은 영역을 위에서 정의해야 합니다.<br /> <br /> User-agent :* 같이 사용한다면 인식되지 않을 수 있고,<br /> Allow: / 이후 Disallow: /test 를 해선 안 되고, Disallow: /test 이후 Allow: / 로 해야 하는 것이지요.<br /> <br /> <br /> 그 외 크롤링의 빈도를 설정하는 Crawl-delay와 같은 명령어도 있는데<br /> google 등에서는 적용되지 않습니다.<br /> 또한 Sitemap를 통해 sitemap 파일의 위치를 지정해 줄 수도 있습니다.<br /> <br /> <br /> 검색엔진은 잘 아시는 google이나 naver 뿐만 아니라 상당히 다양하게 있는데,<br /> 주요한 검색엔진 로봇의 이름은 다음과 같습니다.<br /> <br /> <fieldset><br /> Google: googlebot<br /> Yahoo: yahoo-slurp<br /> MSN: msnbot<br /> Ask/Teoma: teoma<br /> DMOZ: robozilla<br /> Alexa/Wayback: ia_archiver<br /> Baidu: baiduspider<br /> Naver: naverbot, yeti<br /> <br /> Google Image: googlebot-image<br /> Google Mobile: googlebot-mobile<br /> Yahoo MM: yahoo-mmcrawler<br /> Yahoo Blogs: yahoo-blogs/v3.9<br /> MSN PicSearch: psbot<br /> </fieldset><br /> <br /> 그 외 자세한 검색엔진 로봇 명칭은 아래 URL을 통해 확인 가능합니다.<br /> <br /> <a href=http://www.invision-graphics.com/robotstxt_generator.html target=_blank>http://www.invision-graphics.com/robotstxt_generator.html</a><br /> <a href=http://www.robotstxt.org/db.html target=_blank>http://www.robotstxt.org/db.html</a><br /> <a href=http://www.user-agents.org/ target=_blank>http://www.user-agents.org/</a><br /> <br /> <br /> <br /> 예상하시다시피 robots.txt는 Disallow를 통해 때론 악의적인 사람들에 의해 악용될 수도 있습니다.<br /> <br /> 이를테면<br /> <pre class="brush: html;"><br /> User-agent: *<br /> Disallow: /admin/<br /> Allow: /<br /> </pre><br /> 라고 했을 때 도메인 하부에 admin 페이지가 있다는 것은 쉽게 예측 가능하겠습니다.<br /> <br /> 이를 방지하기 위한 방법으로는,<br /> (1) admin 페이지 자체에서 접속 가능한 IP를 지정한다거나<br /> (2) /aaa/admin/ 같은 하부 디렉토리를 이용하고, Disallow는 /aaa/에 대하여 설정하는 방법,<br /> (3) 그리고 meta tag를 통해 개별 페이지에서 검색을 제한하는 방법 등이 있습니다.<br /> <br /> 내용이 이미 충분히 길어졌기에<br /> (3) meta tag를 통해 개별 페이지에서의 검색을 제한하는 방법은 다음에 살펴보겠습니다.<br /> <br /> - achor achor robots.txt SEO 검색엔진 User-agent bot Tue, 31 May 2011 21:58:48 +0900 CKFinder를 활용한 웹앨범 제작 방법 http://achor.net/board/blog/3 <img src='http://achor.net/file/acwebs/upload/board/blog/110524_ckfinder.jpg' /><br /> Frederico Knabben이 만든 CKFinder는<br /> 대개 CKEditor의 plugin으로 사용되는 편입니다만<br /> 그 자체만으로도 충분한 사용 가치가 있지요.<br /> <br /> 특히 손쉽게 자료실을 만들 수 있는데,<br /> 저는 개인적인 웹앨범으로 구성해 놓았습니다.<br /> <br /> <br /> CKFinder를 모르는 분을 위해 간략히 설명 드리자면,<br /> 공식적인 설명 구문은 다음과 같습니다.<br /> <br /> CKFinder - powrful and easy to use Ajax file manager for web browsers<br /> <br /> IE나 Firefox 등의 웹브라우저로<br /> 웹서버 상의 파일들을 관리하게 해주는 Ajax 기반의 툴이지요.<br /> <br /> 자세한 사항은 공식 홈페이지를 찾아가 보십시오.<br /> <br /> 홈페이지: <a href=http://ckfinder.com/ target=_blank>http://ckfinder.com/</a><br /> <br /> <br /> CKEditor나 CKFinder는<br /> 그 놀라운 기능에 비례하도록 꽤나 어려운 편입니다.<br /> <br /> 공식적인 포럼을 통하여 유저 간 커뮤니티는 만들어 놨지만<br /> 대개의 오픈소스 프로그램들이 그러하듯이 그 난이도를 감당하기엔 지원이 좀 아쉽긴 하지요.<br /> <br /> 포럼: <a href=http://cksource.com/forums/ target=_blank>http://cksource.com/forums/</a><br /> <br /> <br /> <br /> 각설하고,<br /> 실제 웹앨범 만드는 것을 풀어 보지요.<br /> 웹개발 및 CKFinder에 기초적인 지식은 있다는 전제로 설명하겠습니다.<br /> <br /> 우선 웹서버에 CKFinder를 설치하고, 웹앨범에 실을 사진들도 웹서버에 올려 놓습니다.<br /> 웹앨범 경로는 자유롭게 설정하되, 사진은 하부에 images 폴더를 만들어 그 안에 넣어두십시오.<br /> <br /> <br /> 1. core/ckfinder_php5.php<br /> <br /> 웹서버 php 버전에 따라 core/ckfinder_php4.php 파일이 될 수도 있습니다.<br /> <br /> 60, 61라인을 아래와 같이 수정하세요.<br /> <br /> <pre class="brush: php; first-line: 60;"><br /> return '&lt;div style="position:absolute; background:transparent; width:100%;height:150px;top:0px;left:0px;padding:0;z-index: 2;">&lt;iframe id="ckfinderframe" onload="blowupIframe();" style="position:absolute; background:transparent; width:100%;height:100%;top:150px;padding:0;z-index: 1;" src="' . $this->_BuildUrl() . '?'.$_REQUEST['구분값'].'" width="' . $this->Width . '" ' .<br /> 'height="' . $this->Height . '"' . $className . $id . ' frameborder="0" scrolling="no">&lt;/iframe>&lt;/div>' ;<br /> </pre><br /> <br /> 상기 코드에서 구분값은 웹앨범마다 구별이 필요할 시 인식할 수 있는 REQUEST 값입니다.<br /> <br /> <br /> 2. skins/스킨명/app.css<br /> <br /> 디폴트 스킨은 kama입니다.<br /> 맨 아래에 아래의 코드를 입력해 주십시오.<br /> <br /> <pre class="brush: css; first-line: 17;"><br /> .columns_2 #sidebar_container {width:0}<br /> </pre><br /> <br /> <br /> 3. 웹앨범 파일<br /> <br /> 웹앨범을 보여줄 파일에 아래와 같은 코드를 삽입하여 주십시오.<br /> <br /> <pre class="brush: php; first-line: 1;"><br /> require_once 'CKFinder설치 절대경로/ckfinder.php';<br /> <br /> $finder = new CKFinder();<br /> $finder->BasePath = 'CKFinder설치 웹경로/';<br /> $finder->Create();<br /> ?><br /> &lt;style type="text/css"><br /> body {<br /> overflow:hidden; height: 100%; <br /> }<br /> &lt;/style><br /> &lt;script type="text/javascript"> <br /> function blowupIframe() {<br /> var targ = $('#ckfinderframe'); <br /> var targHeight = $(window).height()-150;<br /> targ.css({'width' : '100%', 'height' : targHeight + 'px'});<br /> }<br /> &lt;/script><br /> </pre><br /> <br /> <br /> 4. config.php<br /> <br /> config.php 파일은 수정사항이 좀 많습니다.<br /> <br /> 먼저 $baseUrl을 아래와 같이 변경합니다.<br /> <br /> <pre class="brush: php; first-line: 60;"><br /> if(strpos($_SERVER['HTTP_REFERER'],'앨범1')!==False) $baseUrl = '앨범1 웹경로';<br /> elseif(strpos($_SERVER['HTTP_REFERER'],'앨범2')!==False) $baseUrl = '앨범2 웹경로';<br /> elseif(strpos($_SERVER['HTTP_REFERER'],'앨범3')!==False) $baseUrl = '앨범3 웹경로';<br /> else $baseUrl = '기타 웹경로';<br /> </pre><br /> <br /> 상기 예는 HTTP_REFERER 값을 이용하여 앨범을 구분하고,<br /> 각각에 대하여 별도의 폴더를 구성하고 있습니다.<br /> 이렇게 HTTP_REFERER를 통해 config를 가변적으로 설정하여 별도의 경로에서 파일 관리를 하는 것은<br /> 제가 고안해 낸 CKFinder 역사상 최초의 일입니다. -__-;<br /> <br /> 마찬가지로 $baseDir도 수정합니다.<br /> <br /> <pre class="brush: php; first-line: 60;"><br /> if(strpos($_SERVER['HTTP_REFERER'],'앨범1')!==False) $baseDir = '앨범1 절대경로';<br /> elseif(strpos($_SERVER['HTTP_REFERER'],'앨범2')!==False) $baseDir = '앨범2 절대경로';<br /> elseif(strpos($_SERVER['HTTP_REFERER'],'앨범3')!==False) $baseDir = '앨범3 절대경로';<br /> else $baseDir = '기타 절대경로';<br /> </pre><br /> <br /> 그 외 AccessControl이나 ResourceType 등도 자신에 맞게 적절히 수정하세요.<br /> <br /> <br /> <br /> 자세히 설명하자면 끝도 없어서 간략하게 해야할 작업 위주로 나열만 했습니다만<br /> HTTP_REFERER를 활용한 가변적 경로 설정이나<br /> layer 방식의 iframe height 제어,<br /> 성능 증대를 위해 정규식을 대신한 strpos 활용 등<br /> 나름의 세세한 테크닉이 깃들어 있습니다.<br /> <br /> 기본적으로 CKFinder는 CKEditor와 함께 게시판에서 첨부파일을 올리는 기능으로 많이 사용돼 왔습니다만<br /> 위와 같이 CKFinder 자체만으로도 충분히 멋진 앨범이나 자료실을 구축할 수 있습니다.<br /> <br /> 게다가 지정한 폴더에 파일을 옮겨 놓기만 해도 자동으로 썸네일 생성하여 보기 좋게 정리해 주니<br /> 관리도 매우 수월하고요.<br /> <br /> 저는 앞으로 제 삶의 모든 사진과 동영상을 이렇게 관리해 나갈 예정입니다.<br /> <br /> 위의 작업은 모두<br /> 이 홈페이지 문향소> 삶> 결혼> 에 실제 구현돼 있는 것이니 직접 보시면 이해가 쉽겠습니다만<br /> 아쉽게도 사진은 비공개 정책이라서 보여드릴 수가 없네요. ^^;<br /> <br /> 상기의 이미지 파일로 대신하니 널리 이해를.<br /> <br /> - achor achor CKFinder 웹앨범 사진 PHP CKEditor 웹개발 Tue, 24 May 2011 19:10:17 +0900 RSS 피드, 블로그를 검색엔진, 메타블로그에 등록하자 http://achor.net/board/blog/2 정성껏 작성한 블로그 데이터를 사람들과 공유하기 위해서는<br /> <span style='font-weight:bold;'>RSS 피드 혹은 블로그를 검색엔진이나 메타블로그에 등록을 해야 합니다.</span><br /> <br /> <br /> 먼저 블로그 head 태그 내에 다음과 같은 코드를 삽입하세요.<br /> <br /> <pre class="brush: html;"><br /> &lt;link rel="alternate" type="application/rss+xml" title="achor Empire - BLOG" href="http://empire.achor.net/rss/blog" /><br /> </pre><br /> <br /> 위 코드는 해당 블로그의 RSS 피드를 지정하는 것으로,<br /> 검색엔진 및 브라우저가 자동으로 RSS 피드를 파악하게 해주기도 하고,<br /> 또 특정 메타블로그의 경우엔 위와 같은 정의가 없으면 등록이 불가능 하기도 합니다.<br /> <br /> <br /> 코드 작업이 완료되었다면 검색엔진과 메타블로그에 등록을 합니다.<br /> 주요한 곳들은 다음과 같습니다.<br /> <br /> <fieldset><legend>구글</legend><br /> 구글 URL 등록: <a href=http://www.google.co.kr/addurl/?hl=ko&continue=/addurl target=_blank>http://www.google.co.kr/addurl/?hl=ko&continue=/addurl</a><br /> 구글 블로그 등록: <a href=http://blogsearch.google.co.kr/ping target=_blank>http://blogsearch.google.co.kr/ping</a><br /> <br /> </fieldset><br /> 구글은 등록을 보장하지 않으나 회원가입 등의 절차가 없어서 좋습니다.<br /> <br /> <br /> <fieldset><legend>검색엔진</legend><br /> 네이버 RSS 등록: <a href=http://help.naver.com/ops/step2/mail.nhn?upCatg=264 target=_blank>http://help.naver.com/ops/step2/mail.nhn?upCatg=264</a> (RSS피드등록요청)<br /> 다음 RSS 등록: <a href=http://cs.daum.net/mail/form/15.html target=_blank>http://cs.daum.net/mail/form/15.html</a> (블로그, 카페검색 문의> 내블로그 검색(RSS) 등록)<br /> 야후 RSS 등록: <a href=http://kr.helpboard.yahoo.com/helpfeedback/s_center.html?p_isblog=Y&p_qtype=1 target=_blank>http://kr.helpboard.yahoo.com/helpfeedback/s_center.html?p_isblog=Y&p_qtype=1</a><br /> 네이트 일반 등록: <a href=http://add.nate.com/inputsiteinfo.html target=_blank>http://add.nate.com/inputsiteinfo.html</a><br /> 파란 일반 등록: <a href=http://add.paran.com/ target=_blank>http://add.paran.com/</a><br /> <br /> </fieldset><br /> RSS 등록은 RSS 피드의 URL로 등록하면 되고,<br /> 일반 등록은 블로그 URL로 등록하면 됩니다.<br /> <br /> <br /> <fieldset><legend>메타블로그</legend><br /> 올블로그: <a href=http://www.allblog.net/ target=_blank>http://www.allblog.net/</a><br /> 블로그코리아: <a href=http://www.blogkorea.org/ target=_blank>http://www.blogkorea.org/</a><br /> 믹시: <a href=http://mixsh.com/ target=_blank>http://mixsh.com/</a><br /> 오픈블로그: <a href=http://kr.openblog.com/ target=_blank>http://kr.openblog.com/</a><br /> 블로그플러스: <a href=http://www.blogplus.net/ target=_blank>http://www.blogplus.net/</a><br /> 프리로그: <a href=http://www.freelog.net/ target=_blank>http://www.freelog.net/</a><br /> 올포스트: <a href=http://olpost.com/ target=_blank>http://olpost.com/</a><br /> <br /> </fieldset><br /> 메타블로그는 여러 사람들의 블로그 데이터를 모아 놓은 공간입니다.<br /> 주제나 키워드에 따라 다양한 사람들의 블로그 이야기를 나눠 볼 수 있습니다.<br /> <br /> <br /> 다른 곳은 절차가 복잡할 수 있어 하지 않는다 하더라도<br /> 구글의 URL, 블로그 등록은 한 줄만 적어주면 되니 꼭 등록하시길.<br /> <br /> - achor achor SEO 블로그 RSS 메타블로그 검색엔진 Mon, 23 May 2011 09:37:36 +0900 중복되는 링크를 위해 canonical link를 사용하자 http://achor.net/board/blog/1 근래 단축URL의 대중적인 확산에 따라 하나의 페이지를 다양한 URL로 표현하는 일이 많아졌고,<br /> 따라서 SEO(Search Engine Optimization)를 위해<br /> canonical link를 넣어주는 게 효과적인 수단으로 대두되고 있습니다.<br /> <br /> <span style='font-weight:bold;'>canonical link는 페이지의 대표적인 URL를 지정하는 명령어라고 할 수 있습니다.</span><br /> <br /> 단축URL 뿐만 아니라<br /> 게시판 형식으로 된 페이지의 경우에는<br /> 게시판 내부의 검색이나 페이지 이동 등에 따라 다양한 parameter가 get 값으로 연결되기도 하고,<br /> 검색엔진은 이러한 parameter를 포함하여 각각을 다른 페이지로 인식할 수도 있게 됩니다.<br /> <br /> 사실은 하나의 페이지인데<br /> parameter에 따라 각각 인덱싱 하다 보니 검색엔진의 효율도 저하되게 되었고,<br /> 따라서 Google, Yahoo, Microsoft 등이 이를 해결하기 위해 canonical link를 도입하게 된 것이지요.<br /> <br /> canonical link의 사용방법은 간단합니다.<br /> html 문서의 head 태그 내에<br /> <br /> <pre class="brush: html;"><br /> &lt;link rel="canonical" href="http://empire.achor.net/blog/1" /><br /> </pre><br /> <br /> 이렇게 한 줄만 입력해 주면 됩니다.<br /> <br /> 간단하지요?<br /> <br /> <br /> 보다 자세한 정보를 원하는 분들을 위해 추가적인 링크 연결해 놓습니다.<br /> <br /> <iframe width="560" height="450" src='https://docs.google.com/present/view?id=ddvhbrqf_70dp3rv7hn' frameborder="0" allowfullscreen></iframe><br /> <a href=http://prby.me/12 target=_blank>http://prby.me/12</a><br /> <br /> <iframe width="560" height="349" src="http://www.youtube.com/embed/Cm9onOGTgeM" frameborder="0" allowfullscreen></iframe><br /> <a href=http://prby.me/11 target=_blank>http://prby.me/11</a><br /> <br /> - achor achor SEO 단축URL Mon, 23 May 2011 03:01:46 +0900