'.NET/ASP.NET'에 해당되는 글 19건

  1. 2010/04/15 ASP.NET - ICallback을 이용한 JSON 기반의 Javascript Serialization
  2. 2010/04/12 web.config 암호화 - Encrypt Configuration Sections in ASP.NET 2.0 Using RSA
  3. 2010/04/05 ASP.NET Layout 각 폴더 별 설명
  4. 2009/10/11 ASP.NET 2.0 AJAX - UpdateProgress
  5. 2009/03/29 A .NET library for OpenFlashChart control
  6. 2009/02/02 iTunes Data Grid Skin for ASP.NET GridView, ListView Control
  7. 2009/01/21 Apache Mod_Rewrite use as URL_Rewrite in iis 7
  8. 2008/03/14 ASP.NET on Ruby on Rails
  9. 2007/11/02 ASP.NET 503 서버 사용량이 많습니다.
  10. 2007/08/10 엔터키 누르면 특정 버튼 클릭하게 하기 (1)
2010/04/15 19:30

ASP.NET - ICallback을 이용한 JSON 기반의 Javascript Serialization


원문 참조 : http://aspalliance.com/1537_ICallback__JSON_Based_JavaScript_Serialization.1



* 4월 19일 추가 내용
프로젝트 기반은 .NET Framework 3.5 프로젝트로 설정하고 진행하셔야 합니다.

그리고 제가 테스트해 본 소스도 첨부합니다.

예제 소스 파일 다운로드 :





아직 테스트 해보지는 않은 코드이지만 흥미로운 내용이네요~

별다른 라이브러리를 사용하지 않고 ICallback을 이용해서 Javascript Serialization을 JSON Object 형식으로 처리할 수 있는 방법이니깐요.

먼저 Page나 Controll 클래스에서 System.Web.UI.ICallbackEventHandler를 Implement 해야한다고 합니다.


아래 RaiseCallbackEvent 메소드가 자바스크립트 함수를 호출하게 되고요.
RaiseCallbackEvent method invoke through JavaScript function

public void RaiseCallbackEvent(string eventArgument)
{
  //to do code here
}



RaiseCallbackEvent가 완료되면 알아서 GetCallbackResult가 호출되도록 하고요.
GetCallbackResult method invokes itself when the processing of RaiseCallbackEvent method is completed.

public string GetCallbackResult() 
{
  return "";
}



이제 Page_Load나 Page_Init 부분에서 사용자 스크립트를 등록합니다. 'CallServer' 형식으로 아래 예제는 등록하고 있네요.

해당 스크립트에선 CallbackEventReference 를 가져가니 서버측을 호출하도록 되어있죠.

이렇게 하면 C/S 간의 상호 호출되는 부분이 완성되는 듯 합니다.

protected void Page_Load(object sender, EventArgs e)
{
ClientScriptManager scriptMgr = Page.ClientScript;
String cbReference = scriptMgr.GetCallbackEventReference(this"arg"
"ReceiveServerData""");
String callbackScript = "function CallServer(arg, context) {" + cbReference + "; }";        
scriptMgr.RegisterClientScriptBlock(this.GetType(),"CallServer", callbackScript, true);
}




이제 사용자 쪽의 스크립트를 등록합니다.

버튼을 클릭하면 CallSrv를 호출하고 CallServer는 서버측 메소드를 호출해 결과값은 ReceiveServerData를 통해 받도록 되어 있죠.

<script language=javascript type=text/javascript>
function ReceiveServerData(arg, context)
{
  alert(arg); //just to show output

function CallSrv()
{
  CallServer('get customer', '');
}
</script>
<input type="button" value="get customer" onclick="CallSrv()" />



이제 서버측에서 customer 형식에 대한 정의가 필요하겠죠. 아래와 같은 JAVA에서 보면 Beans 와 같은 C# 에서의 클래스 하나를 정의합니다.

public class Customer
{
  public string Name;
  public int Age;
}




이제 핵심적으로 RaiseCallbackEvent 를 정의하는데요.
이 부분이 가장 핵심인 것 같네요.

System.Web.Script.Serialization.JavaScriptSerializer
를 사용하고 있고, 이를 통해서 JSON 형식으로 Object를 반환하도록 해줍니다.

C# 에서의 Class Object (Java로 보면 Beans) 형식을 JSON 형식으로 변수로 받으면
Javascript에서도 객체 형식으로 바로 사용할 수 있게 되겟네요

public void RaiseCallbackEvent(string eventArgument)
{
  //populate Customer object to return
  Customer customer = new Customer();
  customer.Name = "Muhammad Adnan";
  customer.Age = 24;
  //javascript serialization of Customer object
  System.Web.Script.Serialization.JavaScriptSerializer jss;
  jss = new System.Web.Script.Serialization.JavaScriptSerializer();
 
  //stringbuilder to contain serialized customer object
  System.Text.StringBuilder sbCustomer = new System.Text.StringBuilder();
  jss.Serialize(customer, sbCustomer);
 
  jsonResult = sbCustomer.ToString();
}
 
public string GetCallbackResult()
{
  return jsonResult;
}




아래 메시지는 샘플로 출력해본 내용입니다.






별 다른 라이브러리를 사용하거나 하지 않고,

페이지의 PostBack이 일어나거나 페이지가 Refresh 되지 않고 데이터 처리하는 내용으로 아주 좋은 활용이 되겠네요 ^ ^





저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
올블로그추천버튼 블코추천버튼 블로그뉴스추천버튼 믹시추천버튼 한RSS추가버튼 구글리더기추천버튼


이 포스팅이 도움이 되었다면 구글에서 관련 정보를 찾아 보세요 ^^


Trackback 0 Comment 0

Trackback : http://i-ruru.com/trackback/567 관련글 쓰기

2010/04/12 18:03

web.config 암호화 - Encrypt Configuration Sections in ASP.NET 2.0 Using RSA

 

발췌 : http://blog.naver.com/crazydev/130013860087

 

- 암호화

aspnet_regiis.exe -pe connectionStrings -app /Intro20

 

- 암호화 해제

aspnet_regiis.exe -pd connectionStrings -app /Intro20

 

ASP.NET 2.0에서는 DB 연결 문자열등을 손쉽게 암호화 하는 방법을 제공한다.

DB 연결 문자열에는 DB 계정의 ID/PW가 노출되어 있으므로 암호화를 하는 것이 보안상 좋을 것이다.

web.config의 어느 섹션도 다 암호화가 가능하고, 개발자가 따로 해주는 부분은 없다.

 

닷넷 프레임 워크에서 알아서 암호를 풀어서 반환해 주기 때문에 단지 암호화만 하면 된다.

-p 옵션에는 암호화를 하고자 하는 섹션 명을 적어주고 -app 에는 가상 디렉토리 명을

적어 주면 된다.

 

디폴트는 RSA암호화 방식을 사용하는데 이 키가 machine.config 파일에 있다.

하지만 IIS용 계정인 network service 계정이 이 키에 대한 접근 권한이 없다면 에러가 날 수

있는데, 그럴 때에는 아래와 같은 명령어로 권한을 주면 해결이 가능하다.

 

aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT Authority\Network Service"

 

참고 사이트) http://msdn2.microsoft.com/en-us/library/ms998283.aspx

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
올블로그추천버튼 블코추천버튼 블로그뉴스추천버튼 믹시추천버튼 한RSS추가버튼 구글리더기추천버튼


이 포스팅이 도움이 되었다면 구글에서 관련 정보를 찾아 보세요 ^^


Trackback 0 Comment 0

Trackback : http://i-ruru.com/trackback/558 관련글 쓰기

2010/04/05 19:40

ASP.NET Layout 각 폴더 별 설명

 
ASP.NET 프로젝트에 특수 기능을 하는 미리 정의된 폴더들이 있습니다.

잘 모르는 내용들도 있고 자주 사용하시던 내용도 있을거에요~

내용이 정리된 부분이 MSDN이 있어, 평소 별로 중요하게 생각하지 않는 부분이지만 한번씩 상기해볼만 한 내용이에요~

 

ASP.NET Layout 각 폴더 별 설명

 

  • App_Browsers 폴더 : 각 브라우저를 식별하고 기능을 확인하기 위해 ASP.NET에서 사용하는 브라우저 정의 파일을 포함합니다.


  • App_Data 폴더 : Microsoft Access 데이터베이스(.mdb 파일), XML 파일, 로컬 파일에 저장된 기타 데이터 등을 포함합니다. 응용 프로그램을 실행하는 데 사용되는 사용자 계정(예: 로컬 ASPNET 계정)에는 이 폴더에 대해 파일을 읽거나 쓰고 만들 수 있는 권한이 부여됩니다. 웹 사이트 관리 도구와 다양한 ASP.NET 응용 프로그램 기능(예: 멤버 자격 및 역할에 대한 공급자)은 App_Data 폴더에만 사용되도록 구성되었습니다.
    Bin 폴더이전 버전의 Visual Studio와 마찬가지로 컴파일 된 코드를 포함합니다. Bin 폴더의 코드가 나타내는 클래스는 웹 사이트에서 자동으로 참조됩니다. 자세한 내용은 ASP.NET 웹 사이트의 공유 코드 폴더를 참조하십시오.


  • App_LocalResources 폴더 : 특정 페이지에 바인딩 된 .resx 파일을 포함합니다. 각각 다른 언어 또는 언어/culture 조합을 나타내는 .resx 파일을 각 페이지에 여러 개 정의할 수 있습니다. 자세한 내용은 리소스를 사용하여 ASP.NET 웹 페이지 지역화 및 방법: ASP.NET 웹 사이트의 리소스 파일 만들기(Visual Studio)를 참조하십시오.


  • App_GlobalResource 폴더 : App_LocalResources 폴더와 비슷하지만 특정 페이지에 바인딩되지 않은 .resx 파일을 포함합니다. App_GlobalResource 폴더에 있는 .resx 파일의 리소스 값은 응용 프로그램 코드에서 프로그래밍 방식을 통해 액세스할 수 있습니다.


  • App_Code 폴더 : 소스 코드 파일을 포함합니다. 소스 코드는 응용 프로그램의 일부로 컴파일되고 자동으로 참조됩니다. App_Code 폴더는 Bin 폴더와 매우 비슷하지만 컴파일된 코드 대신 소스 코드를 저장할 수 있다는 점이 다릅니다. Visual Web Developer에서 작업하는 동안 IntelliSense에서 파일에 정의된 클래스를 참조할 수 있도록 App_Code 폴더의 소스 코드가 동적으로 컴파일됩니다. 자세한 내용은 ASP.NET 웹 사이트의 공유 코드 폴더를 참조하십시오.


  • App_Themes 폴더 : ASP.NET 웹 페이지와 컨트롤의 모양을 정의하는 파일 컬렉션을 포함합니다. 자세한 내용은 ASP.NET 테마 및 스킨 개요를 참조하십시오.

 

  • App_Browsers 폴더 : 브라우저 기능을 정의하는 .browser 파일을 포함합니다.


  • App_WebReferences 폴더 : 같은 프로젝트 또는 프로젝트 외부에서 웹 서비스에 대한 참조를 만드는 데 사용되는 파일을 포함합니다(예: .disco 및 .wsdl 파일). 자세한 내용은 How to: Add a Reference to a Web Service to a Web Site를 참조하십시오.



 

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
올블로그추천버튼 블코추천버튼 블로그뉴스추천버튼 믹시추천버튼 한RSS추가버튼 구글리더기추천버튼


이 포스팅이 도움이 되었다면 구글에서 관련 정보를 찾아 보세요 ^^


Trackback 0 Comment 0

Trackback : http://i-ruru.com/trackback/557 관련글 쓰기

2009/10/11 23:23

ASP.NET 2.0 AJAX - UpdateProgress

 

 &ndash; 이곳에 (http://www.mari.kr/tag/UpdateProgress) UpdatePanel과 같이 사용하는 UpdateProgress 컨트롤에 대한 설명이 정말 잘 되 있더군요.

 

아래 코드는 위 사이트에서 가져온 내용인데

정말 잘 분석해두셨네요 ㅎㅎ

 

나중에도 잘 쓸 코드 같습니다.

 

 

<asp:UpdateProgress ID="listViewUpdateProgress" AssociatedUpdatePanelID="listViewUpdatePanel" runat="server" DisplayAfter="50">
    <ProgressTemplate>
    <style type="text/css">

        #UpdateProgressTable {
            position:absolute;
            z-index:100;
            top:0px;
            margin:0px;
            left:0px;
            background-color:#FAFAFA;
            border-width:0px;
            border-style:None;
            font-family:"돋움";
            filter:progid:DXImageTransform.Microsoft.Shadow(color=#ffffff, Direction=0, Strength=0)alpha(Opacity=60);
        }

    </style>
    <script type="text/javascript">
        function UpdateProgressInit() {
            var progress = $get("UpdateProgressTable");
            if (typeof (progress) == "object") {
                progress.style.width = getClientBounds().width;
                progress.style.height = getClientBounds().height;
            }
        }

        function CancelAsyncPostBack() {
            var prm = Sys.WebForms.PageRequestManager.getInstance();
            if (prm.get_isInAsyncPostBack()) {
                prm.abortPostBack();
            }
        }

        function getClientBounds() {
            var clientWidth;
            var clientHeight;

            switch (Sys.Browser.agent) {
                case Sys.Browser.InternetExplorer:
                    clientWidth = document.documentElement.clientWidth;
                    clientHeight = document.documentElement.clientHeight;
                    break;
                case Sys.Browser.Safari:
                    clientWidth = window.innerWidth;
                    clientHeight = window.innerHeight;
                    break;
                case Sys.Browser.Opera:
                    clientWidth = Math.min(window.innerWidth, document.body.clientWidth);
                    clientHeight = Math.min(window.innerHeight, document.body.clientHeight);
                    break;
                default: // Sys.Browser.Firefox, etc.
                    clientWidth = Math.min(window.innerWidth, document.documentElement.clientWidth);
                    clientHeight = Math.min(window.innerHeight, document.documentElement.clientHeight);
                    break;
            }
            returnnewSys.UI.Bounds(0, 0, clientWidth, clientHeight);
        }
    </script>

    <table align="left" id="UpdateProgressTable">
        <tr>
            <td align="center">
                <br/>페이지 변경 중 입니다...
                <br/>
                <input id="Button2" type="button" value="취소" onclick="CancelAsyncPostBack()" />
            </td>
        </tr>
    </table>
    </ProgressTemplate>
</asp:UpdateProgress>

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
올블로그추천버튼 블코추천버튼 블로그뉴스추천버튼 믹시추천버튼 한RSS추가버튼 구글리더기추천버튼


이 포스팅이 도움이 되었다면 구글에서 관련 정보를 찾아 보세요 ^^


Trackback 1 Comment 0

Trackback : http://i-ruru.com/trackback/511 관련글 쓰기

  1. Subject JIXmall :: ajax

    Tracked from JIXmall.com 2009/11/24 09:20 delete

    JIXmall :: ajax에 대한 정보입니다.

2009/03/29 05:03

A .NET library for OpenFlashChart control


Open Flash Chart라고 유명한 차트 컨트롤이 있어요.

PHP 기반으로 작동하도록 되어 있죠.


'시간이 남을 때 .NET 기반 컨트롤로 변경 해야겠다'

라고 생각을 가지고 있었는데...


오늘 찾아보니 역시나 있더군요. ㅋㅋㅋ


역시 인터넷엔 저와 비슷한 생각을 하는 사람이 무수히 많다는 사실을 깨닫게 되네요~

.NET Control로 되어 있는 프로젝트 페이지는 아래와 같습니다.

http://openflashchartlib.codeplex.com/

PS. 빼먹은게 있네요. 이 컨트롤은 .NET Framework 3.5 이상에서 작동하도록 되어 있어요...
누가 다운그래이드 좀 ㅠㅁ ㅠ










The project contains ASP.NET control and support classes to work with OpenFlashChart flash component

여기는 원본의 사이트 주소고요.
OpenFlashChart homepage: http://teethgrinder.co.uk/open-flash-chart/

일반적인 설명과 자세한 설명은 여기를 보시면 되겠네요.
The general description and usage details can be found at
http://yesnobox.com/blog/post/Open-Flash-Chart.aspx

Updated library to work with Open Flash Chart 2
Open Flash Chart 2 ASP.NET control

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
올블로그추천버튼 블코추천버튼 블로그뉴스추천버튼 믹시추천버튼 한RSS추가버튼 구글리더기추천버튼


이 포스팅이 도움이 되었다면 구글에서 관련 정보를 찾아 보세요 ^^


Trackback 0 Comment 0

Trackback : http://i-ruru.com/trackback/440 관련글 쓰기

2009/02/02 17:19

iTunes Data Grid Skin for ASP.NET GridView, ListView Control

 

Demo page : http://mattberseth2.com/demo/Default.aspx?Name=iTunes+Data+Grid+Skin&Filter=All

 

 

위와 같은 형태로 GridView, ListView를 출력하도록 도와주네요.

Sort 되는 부분은 jQuery를 혼용해서 처리하도록 했구요 .

가져다 쓰기 좋은 내용이라 스크랩을 ^ ^

 

Ref. http://mattberseth.com/blog/2008/10/itunes_data_grid_skin.html?source=feed

 

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
올블로그추천버튼 블코추천버튼 블로그뉴스추천버튼 믹시추천버튼 한RSS추가버튼 구글리더기추천버튼


이 포스팅이 도움이 되었다면 구글에서 관련 정보를 찾아 보세요 ^^


Trackback 0 Comment 0

Trackback : http://i-ruru.com/trackback/395 관련글 쓰기

2009/01/21 10:46

Apache Mod_Rewrite use as URL_Rewrite in iis 7

http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1691

IIS에서는 Mod_Rewrite의 역할을 URL_Rewrite가 담당하고 있습니다. 이를 활용하시는 것도 보안 강화나 접근성 향상에 도움을 줄 수 있습니다.

 

또한 ASP.NET MVC Pattern Framework 에서 제공하는 URL_Rewrite 엔진의 기능을 직접 패턴을 적용해서 구현할 수도 있겠죠.

물론 MVC 방식의 개발은 아니겠지만 말이죠.

크리에이티브 커먼즈 라이선스
Creative Commons License
올블로그추천버튼 블코추천버튼 블로그뉴스추천버튼 믹시추천버튼 한RSS추가버튼 구글리더기추천버튼


이 포스팅이 도움이 되었다면 구글에서 관련 정보를 찾아 보세요 ^^


Trackback 0 Comment 0

Trackback : http://i-ruru.com/trackback/392 관련글 쓰기

2008/03/14 17:02

ASP.NET on Ruby on Rails

http://reddevnews.com/news/devnews/article.aspx?editorialsid=911
http://acroama.isblog.net/blog_post_52.aspx
http://weblogs.asp.net/scottgu/archive/2007/12/09/asp-net-3-5-extensions-ctp-preview-released.aspx
http://weblogs.asp.net/scottgu/archive/2007/10/14/asp-net-mvc-framework.aspx
http://blog.naver.com/guruby/140043669522

ASP.net 환경에서 ROR을 탈수있는 방법을 제공한다.

Ruby on Rails 를 이용한 MVC 패턴과 ASP.NET MVC 프레임워크와 비교해서 개발해보고 싶은 생각이 드는건 왜인지 ㅡㅡ;

난 뵨태??;;

암튼 이런 뭔가 해보고 싶은 일이 생기면 몸속에 꿈틀꿈틀 뭔가 흥분된다!

꼭 도전해봐야지~ ㅋㄷ

크리에이티브 커먼즈 라이선스
Creative Commons License
올블로그추천버튼 블코추천버튼 블로그뉴스추천버튼 믹시추천버튼 한RSS추가버튼 구글리더기추천버튼


이 포스팅이 도움이 되었다면 구글에서 관련 정보를 찾아 보세요 ^^


Trackback 1 Comment 0

Trackback : http://i-ruru.com/trackback/251 관련글 쓰기

  1. Subject [RoR] 레일즈 3.1 가이드 내려 받기 (Rails Guides)

    Tracked from 월풍도원(月風道院) - Delight on the Simple Life 2011/11/06 17:55 delete

    레일즈 3.1 가이드를 HTML로 내려 받아, 오프라인에서 보는 방법입니다.레일즈 3.1 가이드 내려 받기한국처럼 인터넷 환경이 잘 갖추어진 곳에선 굳이 레일즈 가이드를 다운 받을 필요가 없어요.하지만 레일즈 가이드가 딱 필요한 순간에 서버가 점검중이던가,갑작스런 인터넷 회선의 문제가 생겼을 때 유용합니다.또 인터넷이 아주 느린 환경이나,저처럼 인터넷을 ...

2007/11/02 18:31

ASP.NET 503 서버 사용량이 많습니다.

http://ezmoss:33333/_layouts/listfeed.aspx?List=%7B826F3E14%2D4DFA%2D4DFE%2D9357%2DC2FDE5EA6414%7D

첨부 파일과 같은 에러 발생시 참고할 수 있는 값으로,

machine.config파일의 httpruntime 아래에 있는 appRequestQueueLimit 조절할 있습니다.

관련 자료는 http://msdn2.microsoft.com/en-us/library/e1f13641.aspx 이며,

appRequestQueueLimit

Optional Int32 attribute.

Specifies the maximum number of requests that ASP.NET queues for the application. When there are not enough free threads to process a request, the requests are queued. Incoming requests are rejected with the error "503 - Server Too Busy" when the queue exceeds the limit that is specified in this attribute.

The default is 5000.

NoteNote

For the .NET Framework versions 1.0 and 1.1, the default is 100.

상기의 부분에 내용이 나와 있습니다.(기본값 5000 .NET 3.0 경우임)

너무 높은 값을 입력하게 되면 사이트 반응 속도가 현저히 느려지는 문제점이 있다고 하니, 장애 발생시 사이트 상황에 맞게 수정하여, 사용하시기 바랍니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
올블로그추천버튼 블코추천버튼 블로그뉴스추천버튼 믹시추천버튼 한RSS추가버튼 구글리더기추천버튼


이 포스팅이 도움이 되었다면 구글에서 관련 정보를 찾아 보세요 ^^


Trackback 0 Comment 0

Trackback : http://i-ruru.com/trackback/180 관련글 쓰기

2007/08/10 14:22

엔터키 누르면 특정 버튼 클릭하게 하기

[Page.GetPostBackEventReference()를 이용한 doPostBack]

 

자바스크립트로 behind code의 메서드를 실행하고 싶은 경우가 있다.


이럴 경우 보통은 스크립트에서 __doPostBack() 메서드를 정의해서 사용하곤 한다. 하지만, 이는 좋지 못한 방법이다.

 

__doPostBack() 메서드는 .net에서 자동 생성하는 부분으로, 개발자가 별도로 작성하여도 바뀔 가능성이 있다. 또한, .net에서 자동으로 생성하지 않는 경우도 발생한다.

 

스크립트로 behind code의 메서드를 실행하고 싶을 때는 아래와 같은 방법을 권한다.

 

<%= Page.GetPostBackEventReference( WebFormButton ) %>

 

이는 postback이 발생하는 WebForm Control을 매개변수로 넘겨주면, 자동으로 __doPostBack()을 생성해 준다.


ex)
[Page.aspx]
btnOne -> HTML Input 컨트롤 - visible

<script language="javascript">
    function btnOneClick()
    {
        <%= Page.GetPostBackEventReference( btnTwo ) %>
    }
</script>

 

<input type="button" onclick="btnOneClick()">

 

[Page.aspx.cs]
btnTwo -> WebForm Button 컨트롤 - invisible

private void btnTwo_Click(...)
{
    ...
}

 

 

[추가사항 1]

onunload 이벤트시 처리하려면, btnTwo를 LinkButton으로 설정한다.

크리에이티브 커먼즈 라이선스
Creative Commons License
올블로그추천버튼 블코추천버튼 블로그뉴스추천버튼 믹시추천버튼 한RSS추가버튼 구글리더기추천버튼


이 포스팅이 도움이 되었다면 구글에서 관련 정보를 찾아 보세요 ^^


Trackback 0 Comment 1

Trackback : http://i-ruru.com/trackback/128 관련글 쓰기

  1. 홍반장 2009/01/06 14:45 address edit & del reply

    앗! 어디서 많이 보던가다... ㅋㅋㅋ