PHP의 print_r 함수를 ASP로 구현해보자.

PHP에는 변수의 내용을 쉽게 볼 수 있는 print_r 이란 함수가 있다. 변수형태와 상관없이 변수명만 인자로 넘겨주면 변수에 저장된 내용을 재귀적으로 표시해 줘서 디버깅시 특히 요긴하게 쓸 수 있다. ASP에서는 안타깝게도 유사한 함수가 없어서 비슷한 기능을 하는 함수를 만들어 봤다.

<%  
Sub print_r(var)  
    Dim myPrint  

    Set myPrint = New clsPrint  
    myPrint.print var, 0  
End Sub  

Class clsPrint  
    Public Sub print(var, nIndent)  
        Dim nType, sTypeName  
          
        'Response.Write TypeName(var)  

        nType = VarType(var)  
        Select Case nType  
        Case 0:  
            Response.Write "(vbEmpty)"  
        Case 1:  
            Response.Write "(vbNull)"  
        Case 2:  
            Response.Write var & "(vbIngerger)"  
        Case 3:  
            Response.Write var & "(vbLong)"  
        Case 4,5:  
            Response.Write var & "(vbSingle)"  
        Case 6:  
            Response.Write var & "(vbCurrency)"  
        Case 7:  
            Response.Write var & "(vbDate)"  
        Case 8:  
            Response.Write var & "(vbString)"  
        Case 9:'vbObject  
            sTypeName = TypeName(var)  
            Select Case sTypeName  
            Case "ISessionObject": 'Session  
                print_session var, nIndent  
            Case "IRequest": 'Request  
                print_request var, nIndent  
            Case "IApplicationObject": 'Application  
                print_application var, nIndent  
            Case Else  
                Response.Write "Unimpleneted TypeName:" & sTypeName  
            End Select  
        Case 10:  
            Response.Write "(vbError)"  
        Case 11:  
            Response.Write var & "(vbBoolean)"  
        Case 12:  
            Response.Write "(vbDataObject)"  
        Case 13:  
            Response.Write "(vbDecimal)"  
        Case 14:  
            Response.Write "(vbByte)"  
        Case 8192,8204:  
            print_array var, nIndent + 1  
        Case Else:  
            Response.Write "VarType:" & nType  
        End Select  

        Response.Write vbCrLf  
    End Sub  

    Sub print_array(var, nIndent)  
        print_list "Array", var, nIndent  
    End Sub  

    Sub print_request(var, nIndent)  
        print_name "Request", nIndent  
        print_openbrace nIndent  

        print_dict "Request.Form", var.Form, nIndent + 1  
        print_dict "Request.QueryString", var.QueryString, nIndent + 1  
        print_dict "Request.Cookies", var.Cookies, nIndent + 1  
        print_dict "Request.ServerVariables", var.ServerVariables, nIndent + 1  

        print_closebrace nIndent  
    End Sub  

    Sub print_application(var, nIndent)  
        print_name "Application", nIndent  
        print_openbrace nIndent  

        print_dict "Application.StaticObjects", var.StaticObjects, nIndent + 1  
        print_dict "Application.Contents", var.Contents, nIndent + 1  

        print_closebrace nIndent  
    End Sub  

    Sub print_session(var, nIndent)  
        print_name "Session", nIndent  
        print_openbrace nIndent  

        print_dict "Session.StaticObjects", var.StaticObjects, nIndent + 1  
        print_dict "Session.Contents", var.Contents, nIndent + 1  

        print_closebrace nIndent  
    End Sub  

    Sub print_dict(sTypeName, var, nIndent)  
        Dim sKey  

        print_name sTypeName, nIndent  
        print_openbrace nIndent  

        For Each sKey In var  
            print_key sKey, nIndent + 1  
            print var(sKey), nIndent + 1  
        Next  

        print_closebrace nIndent  
    End Sub  

    Sub print_list(sTypeName, var, nIndent)  
        Dim vValue, nIndex  

        Response.Write sTypeName & vbCrLf  
        print_openbrace nIndent  

        nIndex = 0  
        For Each vValue In var  
            print_key nIndex, nIndent + 1  
            print vValue, nIndent + 1  
            nIndex = nIndex + 1  
        Next  

        print_closebrace nIndent  
    End Sub  

    Private Sub print_name(sName, nIndent)  
        print_indent nIndent  
        Response.Write sName & vbCrLf  
    End Sub  

    Private Sub print_key(sKey, nIndent)  
        print_indent nIndent  
        Response.Write "[" & sKey & "] => "  
    End Sub  

    Private Sub print_openbrace(nIndent)  
        print_indent nIndent  
        Response.Write "(" & vbCrLf  
    End Sub  

    Private Sub print_closebrace(nIndent)  
        print_indent nIndent  
        Response.Write ")" & vbCrLf  
    End Sub  

    Private Sub print_indent(nIndent)  
        Response.Write String(nIndent * 4, " ")  
    End Sub  
End Class  


a = "123"  
b = Split("1 2 3 4 5", " ")  
print_r a  
print_r b  
print_r Session  
'print_r Application  
'print_r Request  
%>   

위를 브라우져에서 실행해서 소스보기를 하면 다음의 결과를 얻을 수 있다.

123(vbString)
Array
    (
        [0] => 1(vbString)
        [1] => 2(vbString)
        [2] => 3(vbString)
        [3] => 4(vbString)
        [4] => 5(vbString)
    )

Session
(
    Session.StaticObjects
    (
    )
    Session.Contents
    (
    )
)

배열도 지원하고, Application, Session, Request 객체의 내용도 볼 수 있다. 자체적으로 쓰는 객체는 “Unimpleneted TypeName”이란 결과가 나올텐데, 이는 소스에다 해당 객체를 출력하는 부분을 추가해 주면 된다.

남이섬 가을여행 – 나미나라공화국

보통 대학다닐 때 MT로 한번쯤 가봤을 남이섬을 애들 핑계로 이제야 처음 가보게 됐다. 오랜만에 경춘선 기차를 타고서 지금은 많이 사라진 기차안의 옛모습들을 기억하며 가평으로 향했다.
사용자 삽입 이미지
한시간 반 기차를 타고 도착한 가평역. 여기서 택시를 타고 남이섬 선착장으로 향했다. 택시비는 4천원정도, 가까웠다.
사용자 삽입 이미지
남이섬 선착장에 들어서니 특이한 문구 “입국심사대”라는 푯말이 보였다. 나름 섬을 하나의 공화국이란 나라로 여기고 여기에 따른 부대시설들의 명칭을 이렇게 지은것 같다. 괜찮은 발상이다.
사용자 삽입 이미지
남이섬 선착장. 배는 몇분 기다리지 않고 바로 탈 수 있었다.
사용자 삽입 이미지
탑승중…
사용자 삽입 이미지
너무나 화창한 가을 날씨였다. 모터보트를 타는 이들도 보이고.
사용자 삽입 이미지
여인상
사용자 삽입 이미지
사용자 삽입 이미지
곧게 뻗은 나무들 사이로..
사용자 삽입 이미지
남이섬에는 열차도 다니고.
사용자 삽입 이미지
음악 박물관도 있었는데.. 화분으로 만든 높은음 자리표
사용자 삽입 이미지
남이섬 하면 겨울연가를 빼놓을 수 없을 것 같다.
사용자 삽입 이미지
겨울연가에서 처음 키스하던 너무나 유명한 곳.
사용자 삽입 이미지
책으로 만든 문.
사용자 삽입 이미지
푸르른 잔디
사용자 삽입 이미지
에 홀로 서있는 꽤 나이가 있어 보이는 나무
사용자 삽입 이미지
전기 자동차도 탈 수 있다.
사용자 삽입 이미지
하늘 자전거. 와 하늘 정말 이쁘다.
사용자 삽입 이미지
추억의 옛날 도시락 식당. 저렴한 가격(4천원)에 옛 기억을 추억하며 식사를 할 수 있는 곳. 사람이 많아서 30분정도 기다려야 식사를 할 수 있었다.
사용자 삽입 이미지
도시락을 잡고 흔들면 맛있게 비벼진 도시락 비빔밥을 먹을 수 있다.
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
전기 자전거.
사용자 삽입 이미지
사용자 삽입 이미지
타조랑 오리, 토끼를 그냥 방목한다. 애들이 너무 좋아하더군. 타조 볼펜이라고 이쁜 볼펜이 있던데 가격이 너무 세서 사지는 못했다.
사용자 삽입 이미지
이제 돌아갈 시간. 아무 생각없이 나왔는데 배를 타려고 기다리는 엄청난 줄에 놀랐다. 혹시나 기차시간 놓칠까봐 노심초사하고.
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
청량리행 기차를 기차를 기다리면 가평역에서
사용자 삽입 이미지

구리한강시민공원 코스모스 축제

9월19일에서 21일까지 3일간 열리는 코스모스 축제에 다녀왔다. 가을햇살 치고는 너무나 뜨거워서 좀 고생을 했지만 너무도 이쁘게 핀 코스모스는 이제 가을이 성큼 다가왔음을 느끼게 했다.사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지