Google Analytics

2014-07-15

2014-07-11

마우스 우클릭 금지, 드래그 금지, 영역 선택 제한

 <script type='text/javascript>
     function keypressed(){
         if(event.button==2){             //button=1이면 왼쪽, button=2이면 오른쪽 버튼을 지칭
         alert("오른쪽 누르면 강퇴");
          }
     }
</script>
 <body  onmousedown=keypressed(); onContextmenu="return false"
 onDragstart="return false" onSelectstart="return false" >
각 속성에 대한 내용은 아래와 같습니다.

onContextmenu="return false"    //마우스 오른쪽 버튼 사용 금지
onDragstart="return false"         //마우스 드래그 금지
onSelectstart="return false"     //마우스를 이용한 일정 영역 선택 제한

 onDragstart="return false" onSelectstart="return false" >

jQuery를 이용한 페이지 이동(로딩) 중 이미지 표시

Tistory에 있는 raintype's 블로그 운영시에 공개했던
업데이트를 하여 공개 합니다.

기존에 변경한 모듈에서 발견된 버그는 로딩 이미지를 각 웹페이지에서
변경이 불가능하였던 부분으로 동작방법을 변경하여 처리하였습니다.

기존에는 ProgressBar.js를 웹페이지에 연결하면 무조건 로딩 이미지가
등록되게 하였습니다. 그리고 이미지 등록을 하지 않기 위해서는 별도의 세팅을 하도록 했습니다.

패치 버전에서는 반대로 로딩 이미지를 등록하기 위해서는 각 웹페이지에서 함수를 실행해야 하는
형태로 변경하였습니다.

먼저 ProgressBar.js 파일은 아래와 같습니다.
/* 
 * ProgressBar.js - Progress bar에 대한 정의
 * 호환성 : IE7, IE8, 파이어폭스3.0.4, 크롬 에서 정상동작
 *          Opera 브라우저에서는 onbeforeunload 이벤트 미지원으로 동작하지 않음(오류 발생은 없음)
 */
var progressBar = {
    image: "/Images/dbadmin/img/ProgressBar-1.gif", // 사용할 이미지 파일
    enable: function() {
        // 크롬과 사파리에서 beforeunload 이벤트가 실행되는 동안
        // 동적으로 생성된 img 엘리먼트가가 정상적으로 로딩되지 않아 미리 img 엘리먼트를 생성한다.
    $("body").append('<img id ="imgProgressbar" src="' + progressBar.image + '" alt="progressbar" />');
        $("#imgProgressbar").css("display", "none");
        // IE에서 애니메이션 gif가 멈춰있는 현상으로 인하여 setTimeout을 이용하여 Progressbar function 실행
        $(window).bind("beforeunload", function() { setTimeout("Progressbar()", 0); });
    }
};

/* Progress Bar 함수 */
function Progressbar() {
    $("#imgProgressbar").modal({
            overlayCss: { "background-color": "#000", "cursor": "wait" },
            containerCss: { "background-color": "#fff", "border": "0px solid #ccc" },
            close: false,
            closeHTML: ''
     });
}



각 웹페이지에서는 아래와 같이 설정을 하면 됩니다.
    <script type="text/javascript" src="jquery-1.3.2.min.js"></script>
    <script type="text/javascript" src="jquery.simplemodal-1.2.3.js"></script>
    <script type="text/javascript" src="ProgressBar.js"></script>

    <script type="text/javascript">
        $(function() {
            // progressBar 설정
            progressBar.image = "/Images/ProgressBar-1.gif";
            progressBar.enable();
    </script>

jQuery 기본 모듈과 simplemodal plugin을 연결하시고
ProgressBar.js 파일을 연결하신 후에 페이지 로딩 중 이미지를 사용하기 위해서는
progressBar.enable(); 을 실행하면 됩니다.

로딩 중 이미지를 변경하기 위해서는 progressBar.enable(); 실행전에
progressBar.image = "/Images/ProgressBar-1.gif"; 과 같이 이미지 파일 경로를
progressBar.image에 등록하면 됩니다.

Order by convert에 따른 정렬 순서

-- 숫자, 영문, 한글 순서
ORDER BY 컬럼명

-- 숫자, 한글, 영문 순서
ORDER BY CONVERT (컬럼명, 'VN8VN3')

-- 한글, 영문, 숫자 순서
ORDER BY CONVERT (컬럼명, 'US8ICL')

-- 한글, 숫자, 영문 순서
ORDER BY CONVERT (컬럼명, 'ISO2022-KR')
progressbar

-- 영문, 한글, 숫자 순서
ORDER BY CONVERT (컬럼명, 'UTFE')

ASP.NET 음력 변환

DateTime date = DateTime.Parse("2010-08-24");
KoreanLunisolarCalendar ksc = new KoreanLunisolarCalendar();

//2010년 2월 14일의 음력에 해당하는 년도 구하
int year = ksc.GetYear(date);

//2010년 2월 14일의 음력에 해당하는 월 구하
int month = ksc.GetMonth(date);

//2010년 2월 14일의 음력에 해당하는 일 구하
int day = ksc.GetDayOfMonth(date);

ViewData["date1"] = string.Format("{0}-{1}-{2}", year, month, day);

progressbar

//ToDateTime은 음력날짜를 입력받아 양력 날짜를 반환하는  메소드입니다.
DateTime date2 = ksc.ToDateTime(year, month, day, 0, 0, 0, 0);

ViewData["date2"] = date2;

MapReduce 병렬 데이터 처리 기법

마틴 파울러의 NoSQL의 내용 중 MapReduce와 관련된 내용이
전혀 이해가 되지 않아 관련된 내용을 구글링 중 아래 포스트를 보게 되었다.
나름 MapReduce에 대해서 이해하기 쉽게 설명되어 있다.


MapReduce: 단순하지만 유용한 병렬 데이터 처리 기법 - 1부 바로가기

Python Tools for VisualStudio

최근에 Python을 다시 공부하려고 준비 중에 VS2013에서 Python을 지원한다는 사실을 알게 되었다.


Python Tools for VisualStudio 바로가기



VS2013 세팅은 아래 동영상을 확인 하면 쉽게 알 수 있다.

2014-07-10

Simple Injector 테스트

몇 시간 동안 Simple Injector를 가지고 테스트를 진행해 봤다.
기본적인 사용법만 보고 ASP.NET MVC에 연동하여 Container를 사용해 보았다.
특별한 건 없이 간편하게 연동 되는 것 같다.

다음으로 테스트 진행 한 것은 Interception 기능이다.
Unity처럼 별도 모듈이 있을 줄 알았는데 Simple Injector 사이트에 있는 예제 코드를 copy&paste 하면 된다.
한가지 문제 점은 Container를 통하여 Controller에 Interception 대상이 되는
객체를 자동으로 주입 시켜 주면 이상하게 Interception이 동작하지 않고 있다.
관련 내용을 검색해 보았으나 뚜렷한 답을 찾지 못했다.
임시 방편으로 Controller에서  container에게 수동으로 객체를 요청하는 방법을 사용했다.
수동으로 객체를 요청하면 Interception이 동작한다. -_-

일단 Simple Injector 사이트에 들어가서 차근 차근 사용법을 더 익혀 봐야겠다.


ASP.NET MVC Integration Guide 바로가기

Adding interception abilities to the Simple Injector 바로가기

IoC Container


최근에 IoC Container 도입과 관련하여 검토 중에 있다.
ASP.NET MVC를 사용하고 있기에 Unity를 검토하고 있었는데
성능 문제는 없을까 하고 벤치마킹 자료를 찾아 봤다.

IoC Container Benchmark - Performance comparison


벤치마킹 결과로 Unity도 많이 나쁜편은 아니나 Simple Injector가 가장 베스트한 결과로 나왔다.
Simple Injector에 대해서 검토 작업을 진행해 봐야겠다.


simpleinjector 바로가기