경우의 수를 만들어내는 재귀함수

검색해보니 몇 가지 나오는데 개인적으로는 이게 가장 알아보기 쉬운 것 같아서 퍼옵니다.
물론 출처는 밝혀야겠지요.


//배열의 요소를 모두 조합한 경우의 수를 뽑아내는 경우
function NumberOfCases($arr_number, $used=array()) {
    foreach($arr_number as $v) {
        if(in_array($v, $used)) continue;
        $used[] = $v;
        if(sizeof($arr_number)==sizeof($used)) {
            echo implode('',$used).'<br/>';
            return;
        } 
        NumberOfCases($arr_number, $used);
        array_pop($used);
    } 
}

//이렇게 함수를 만든다음..
//배열을 지정해줘야겠지요.
$arr = array('a','b','c');

//그리고는
NumberOfCases($arr);

이렇게 하면 어떤 배열이든 경우의 수를 모두 출력해줍니다.

출처는 아래와 같습니다.
https://lael.be/389
여기 가시면 몇 가지 다양한 경우의 수를 뽑는 함수들이 나오는데 저는 위의 녀석이 가장 이해하기 쉽다고 생각해서 이걸 퍼왔습니다.
재귀함수는 참 어려워요~ ㅠㅠ

(네이버 지식IN에 답글 달아놓고 기억해둘만한 녀석이다 생각해서 제 블로그에도 남깁니다. ^^)

by 잠신 | 2013/01/22 00:02 | PHP&MYSQL | 트랙백 | 덧글(0)

float : center가 되도록 하는 마법

사실 이걸 원할 때가 많은데..
margin: 0 auto;

이걸로 만족이 안될때가 있다. 당췌~

내가 원하는 것만 가운데로 보내고 싶은데 말이지.
그럴 때 사용하는 마법!

어디서 퍼왔는지 출처는 기억이 안난다.
참고로 이 녀석은 ie에서는 제대로 작동하지 않을지 모른다.
모바일 용으로 고민했던 것들이다.


#title{

float:right;
position:relative;
left:-50%;
text-align:left;
}
#title ul{
list-style:none; 
position:relative;
left:50%;
display: table;
}

#title li{position:relative;display: table-cell;
vertical-align: middle;; padding-right: 0.5em;
}

by 잠신 | 2012/03/13 18:35 | CSS | 트랙백 | 덧글(0)

Viewport 이해하기

viewport란?
모바일 브라우저 중 webkit을 기반으로 한 녀석들은 PC의 브라우저 윈도우에 
해당하는 Viewport라는 녀석이 있습니다.
기본적인 뷰포트의 넓이는 980px로 설정되어 있어서,  폰에서 보여질 컨텐츠를 500px로 
만들었다면 480px의 여백이 생기도 페이지의 넓이는  980px이 됩니다. 
정리하자면 아이폰의 경우 320 x 480px 의 화면사이즈를 가지기 때문에 980px과 비교하면 
PC화면의 약 1/3의 크기로 보이게 됩니다.
viewport설정방법
viewport를 설정하려면 head에 meata태그를 추가하면 됩니다.
<meta name="viewport" content="속성값">
viewport속성값
 속성내용단위 기본값 허용범위 특이사항 
widthviewport의 넓이px980px 200 ~ 10,000 device-width로 지정가능 
heightviewport의 높이px가로화면비율에서  계산된 값 200 ~ 10,000device-height로 지정가능 
initial-scale초기 배율값승수지정 120%  = 1.2 viewport에서  계산된 값  0 ~ 10  
minimum-scale승수 지정승수 .25 0 ~ 10 
maximum-scale승수 지정승수1.60 ~ 10  
user-scalable확대,축소 지원여부yes, noyes  
viewport의 넓이를 400px하고 시작 비율을 2로 적용한 코드;
<meta name="viewport" content="width=400px, initial-scale=2">
viewport의 확대축소를 지원하고 싶지 않을 경우 :
<meta name="viewport" content="width=400px, user-scalable=no, initial-scale=2">
실습하기
시작시 content의 크기를 2.3배로 보이게 하는 코드 :
<meta name="viewport" content="width=320px, initial-scale=2.3">
결과 ( 웹 브라우저는 viewport가 무시됨 )
user-scalable을 이용해 content스케일 조절을 막은 코드 :
<meta name="viewport" content="width=320px, user-scalable=no, initial-scale=1">
결과화면 :
이 글의 출처는 http://chaospace.tistory.com/152 여기입니다.
제가 필요한 요소 몇가지를 모아서 사용하려고 퍼왔습니다.

by 잠신 | 2012/03/01 13:44 | 트랙백 | 덧글(0)

제발 ie7은 버려주세요~

<!--[if lt IE 7]>

<div style='border: 1px solid #F7941D; background: #FEEFDA; text-align: center; clear: both; height: 75px; position: relative;'>

  <div style='position: absolute; right: 3px; top: 3px; font-family: courier new; font-weight: bold;'><a href='#' onclick='javas-ript:this.parentNode.parentNode.style.display="none"; return false;'><img src='http://www.ie6nomore.com/files/theme/ie6nomore-cornerx.jpg' style='border: none;' alt='Close this notice'/></a></div>

  <div style='width: 700px; margin: 0 auto; text-align: left; padding: 0; overflow: hidden; color: black;'>

    <div style='width: 75px; float: left;'><img src='http://www.ie6nomore.com/files/theme/ie6nomore-warning.jpg' alt='Warning!'/></div>

    <div style='width: 275px; float: left; font-family: Arial, sans-serif;'>

      <div style='font-size: 13px; font-weight: bold; margin-top: 12px;'>너무 오래된 웹브라우저를 사용하시고 계십니다.</div>

      <div style='font-size: 12px; margin-top: 6px; line-height: 12px;'>본 사이트를 원활하게 보실 수 있도록 웹브라우저를 업데이트 하세요.</div>

    </div>

    <div style='width: 75px; float: left;'><a href='http://www.firefox.com' target='_blank'><img src='http://www.ie6nomore.com/files/theme/ie6nomore-firefox.jpg' style='border: none;' alt='Get Firefox 3.5'/></a></div>

    <div style='width: 75px; float: left;'><a href='http://www.browserforthebetter.com/download.html' target='_blank'><img src='http://www.ie6nomore.com/files/theme/ie6nomore-ie8.jpg' style='border: none;' alt='Get Internet Explorer 8'/></a></div>

    <div style='width: 73px; float: left;'><a href='http://www.apple.com/safari/download/' target='_blank'><img src='http://www.ie6nomore.com/files/theme/ie6nomore-safari.jpg' style='border: none;' alt='Get Safari 4'/></a></div>

    <div style='float: left;'><a href='http://www.google.com/chrome' target='_blank'><img src='http://www.ie6nomore.com/files/theme/ie6nomore-chrome.jpg' style='border: none;' alt='Get Google Chrome'/></a></div>

  </div>

</div>

<![endif]-->

by 잠신 | 2012/02/28 18:32 | 트랙백 | 덧글(2)

[JQUERY] 떠다니는 퀵메뉴 2편

앞선 것은 화면에서 고정되어 있는 녀석입니다.
그래서 화면을 늘이거나 줄여도 화면상에서 같은 위치에 있게 됩니다.

이번 거는 보이는 컨텐츠 내에서 위치가 고정되는 겁니다.
예를 들면 쇼핑몰 오른쪽에 최근 본 목록을 볼 때 항상 상품설명 밖에 위치하고 있고
거기서 상하로 스크롤 될 때도 위치가 고정되는 거죠.

그런 걸 만들어보고자 하는 것입니다.

<script type="text/javascript" language="Javascript">
        jQuery(document).ready(function() {
            jQuery(window).bind("resize", function() {
                jQuery("#quick_menu_div").css("top", 100).css("left", ( document.body.clientWidth / 2) - 525).show();
            }).trigger("resize");
           
            b_width = $(document.body).width(); //페이지 전체크기
            t_height = $(document.body).scrollTop(); //상단 높이
      
      
            width = b_width/2 - 525;
            height = t_height + 100; //상단부터 띄워야 하는 높이
      
            $("#quick_menu_div").css({top:height, left:width, display:'block'});
          
          
            var currentPosition = parseInt($("#quick_menu_div").css("top"));
          
            $(window).scroll(function() {
                var position = $(window).scrollTop(); // 현재 스크롤바의 위치값을 반환합니다.
                $("#quick_menu_div").stop().animate({"top":position+currentPosition+"px"},1000);
            });
        });
    </script>

이걸 head에 넣고

본문에 아래와 같이 넣어야 합니다.
<div id="quick_menu_div">
    여기에 뭘 넣어야 하나?
</div>

마지막으로 css를 넣어줘야겠죠?

#quick_menu_div {
    width: 150px;
    height: 350px;
    position: absolute;
    background-color: #EEE;
    top: 100px;
    display: block;
    z-index: 1000;
}

이렇게 하면 만들 수 있습니다.

상단 script에서 이런 식으로 function으로 만든 다음 원하는 값을 하나로 넣는 식으로 하면 관리가 훨씬 수월합니다.

jQuery(document).ready(function() {
           
            quickMenu("#top_menu", 1, 515, 100);
           
            function quickMenu(Div, leftRight, leftMargin, topMargin){
           
                b_width = $(document.body).width(); //페이지 전체크기
                t_height = $(document.body).scrollTop(); //상단 높이
                if(leftRight == 1){
                    width = b_width/2 - leftMargin;
                    jQuery(window).bind("resize", function() {
                        jQuery(Div).css("top", topMargin).css("left", ( document.body.clientWidth / 2) - leftMargin).show();
                    }).trigger("resize");
                } else {
                    width = b_width/2 + leftMargin;
                    jQuery(window).bind("resize", function() {
                        jQuery(Div).css("top", topMargin).css("left", ( document.body.clientWidth / 2) + leftMargin).show();
                    }).trigger("resize");
                }
               
                jQuery(window).bind("resize", function() {
                    jQuery(Div).css("top", topMargin).css("left", ( document.body.clientWidth / 2) - leftMargin).show();
                }).trigger("resize");
               
                height = t_height + topMargin; //상단부터 띄워야 하는 높이
          
                $(Div).css({top:height, left:width, display:'block'});
              
              
                var currentPosition = parseInt($(Div).css("top"));
              
                $(window).scroll(function() {
                    var position = $(window).scrollTop(); // 현재 스크롤바의 위치값을 반환합니다.
                    $("#top_menu").stop().animate({"top":position+currentPosition+"px"},1000);
                });
            }
        });

by 잠신 | 2010/09/03 16:42 | JAVASCRIPT | 트랙백 | 덧글(0)

[JQUERY]스크롤에 따라 움직이는 퀵메뉴바

중앙정렬된 값을 900으로 놓고 본다면 거기에 따라 중앙정렬에 맞춰 일정한 위치에 퀵메뉴를 놓도록 한다.

1. jquery는 일단 올린다.


2. head에 다음 내용을 넣는다.
<script type="text/javascript">
    $(document).ready(function(){
       
        b_width = $(document.body).width(); //페이지 전체크기
        d_width = $("#head_menu_layout").width(); //본문 전체 크기임
        t_height = $(document.body).scrollTop(); //상단 높이
   
   
        width = (b_width - d_width) <= 0 ? 900 : b_width/2 - 610; //중앙에서 어느 위치에 놓을지 적는다.
//900은 가운데 정렬한 div 값을 적는다.
//-610은 왼쪽으로 +는 오른쪽으로 놓는것이다.
        height = t_height + 150; //상단부터 띄워야 하는 높이
   
        $("#quick_menu_div").css({top:height, left:width, display:'block'});
       
       
        var currentPosition = parseInt($("#quick_menu_div").css("top"));
       
        $(window).scroll(function() {
            var position = $(window).scrollTop(); // 현재 스크롤바의 위치값을 반환합니다.
            $("#quick_menu_div").stop().animate({"top":position+currentPosition+"px"},1000);
        });
    });
</script>

3. body에 들어갈 내용을 올린다.

<div id="quick_menu_div">
    퀵메뉴 테스트
</div>

4. 관련된 CSS파일에 다음 값을 넣어야 한다.
#quick_menu_div {
    width: 150px;
    height: 350px;
    background-color: #FFF;
    position: absolute;
    top: 150px;
    display: none;
    z-index: 1000;
}
이 가운데 position과 top, display, z-index는 넣어야 한다.

by 잠신 | 2010/05/24 22:48 | JAVASCRIPT | 트랙백 | 덧글(0)

유니코드 데이터를 한글로 변환

ckfinder를 쓰다보니 한글파일이 올라가기는 하는데 이 녀석이 실제로 DB에는 한글을 유니코드로 변환해서 올라간다.

다시 이 녀석을 utf-8환경에서 한글로 보여주기 위해서는 다음과 같이 urldecode를 넣어서 한글로 만들고 보여주어야 한다.
3시간쯤 헤맸나? 휴~~

urldecode($name);

이 녀석을 다시 유니코드로 바꾸는 건 urlencode($name);  이렇게 하면 된다.

by 잠신 | 2010/05/24 15:42 | PHP&MYSQL | 트랙백 | 덧글(0)

서버에서 현재 위치를 알고 싶을 때

<?
global $PHP_SELF;
$thisfilename=basename(__FILE__);
$temp_filename=realpath(__FILE__);
if(!$temp_filename) $temp_filename=__FILE__;
$osdir=eregi_replace($thisfilename,"",$temp_filename);
unset($temp_filename);
$virdir = eregi_replace($thisfilename,"",$PHP_SELF);

echo "현재 디렉토리의 절대경로 : ".$osdir."<br>";
echo "현재 디렉토리의 상대 경로 주소 : ".$virdir."<br>";
 ?>

출처는 http://www.xe.allbaro.net/?document_srl=44099 여기다.
웹서핑하다 알게 되었는데 유용할 것 같아서 챙겨둔다.

by 잠신 | 2010/05/24 13:14 | PHP&MYSQL | 트랙백 | 덧글(0)

IE6에서 PNG 투명 사용하기

별의 별 짓을 다해봤는데 결국 Jquery로 갑니다.

png가 배경으로 되었을 때 position:relative로 하지 않으면 관련 링크가 모두 죽는 것 말고는
가장 확실한 방법인듯 합니다. 따로 설정해줄 것도 없고 배경으로 png쓰기는 그만입니다.

순서
1. jquery.js와 jquery.pngFix.js 다운로드하기
2. head에 첨부시켜주기

<script type="text/javascript" src="/main/js/jquery.js"></script>
<script type="text/javascript" src="/main/js/jquery.pngFix.js"></script>
3. 그 아래 다음과 같은 함수 넣어주기

<script type="text/javascript"> 
$(document).ready(function(){
$(document).pngFix();
});
</script>

4. 링크가 다 죽어버리므로 링크 들어가는 녀석은 position:relative로 변경해주기

끝!



by 잠신 | 2010/02/02 15:51 | 트랙백 | 덧글(0)

e-mail, homepage check 정규표현식

^[-_a-z0-9]+(\.[-_a-z0-0]+)*@[-_a-z0-9]+(\.[-_a-z0-9]+)+$

이메일 체크할 때 사용하는 정규표현식이다.

중간에 (\.[-_a-z0-0]+)은 어떤 메일에서는 아이디부분 중간에 .이 들어갈 수 있다는 점을 활용하여 사용한 이메일 주소도 있을 수 있고 이 값 역시 true로 돌려주기 위한 것이다.

[a-z0-9]+\.[a-z0-9]+

이것은 홈페이지 체크시 사용하는 정규표현식

by 잠신 | 2009/05/21 14:24 | PHP&MYSQL | 트랙백 | 덧글(0)

◀ 이전 페이지          다음 페이지 ▶