자바스크립트는 독특한 것들이 많은데 그중 하나가 연관배열입니다. 직접적으로 연관배열이 지원되는 언어는 많지 않은걸로 알고 있는데 말이죠 ㅎㅎㅎ (참고 : 위키백과 - 연관 배열) 1. 연관 배열 이란? 일반적으로 배열에 접근하기 위해서 인덱스(index, 첨자)를 이용하여 접근합니다. int nArray[10]; nArray[3] = 11; nArray[9] = 13; 이런 식입니다. 그런데 자바스크립에서는 위와 같은 일반적인 방법 이외에도 인덱스대신 문자열을 이용하여 접근 할수 있습니다. int nArray = new Array(10); nArray["Val01"] = 11; nArray["Val01"] = 13; 이렇게 말이죠. 이렇게 인덱스가 아닌 키로 배열에 접근하는 것을 연관배열이라고 합니다. ..
아작스의 기원은 특정영역만 갱신하는 것이기 때문에 아작스영역안에서 포스백이 일어나면 '부분 포스트백'이라고 부릅니다. 당연히 페이지 포스트백은 일어나지 않을 것이라고 생각했습니다. 그런데 아니네요 ㅡ,.ㅡ; (참고 : MSDN Magazine - AJAX 응용 프로그램 아키텍처, 1부 ) 1. 문제 발견하기 아작스영역안에 버튼을 넣고 눌러 봅시다. 중단점을 잡아보면 페이지 로드에서 중단점이 잡힙니다. 신기하게도 페이지의 UI는 갱신이 되지 않네요 ㅡ.ㅡ;; 이 이야기는 업데이트페널이 각자 돌아간다고 생각하고 있는 우리의 상식을 벗어납니다. 1-1. 테스트용 코드 테스트를 위해서 '웹응용프로그램'프로젝트를 생성하고 웹폼을 추가 합니다. 그리고 아래 코드를 넣습니다. 페이지 Ajax1 Ajax2 비하인드는 ..
일반적인 응용프로그램을 만들 때 콘솔에 값을 출력하여 값을 확인하는 경우는 흔합니다. 보통 비주얼 스튜디오에서는 '보기 > 출력'을 통해서 확인합니다. 1. 'ASP.NET'에서 콘솔 출력하기 ASP.NET에서는 'System.Diagnostics'를 이용하여 출력해야 합니다. (참고 : MSDN - 연습: ASP.NET 추적을 System.Diagnostics 추적과 통합) System.Diagnostics.Trace.WriteLine("[출력할 내용]"); 2. 일반적인 .NET 응용프로그램의 경우 보통 응용프로그램을 만들면 그냥 'Console'을 이용하면 됩니다. Console.WriteLine([내용]); 마무리 ASP.NET에서는 콘솔출력을 하면 아무런 내용이 나오지 않습니다. 검색해보니 응용..
1. 문제의 발견 구글 Closure Compiler를 사용하다가 다음과 같은 오류가 났습니다. JSC_TRAILING_COMMA: Parse error. IE8 (and below) will parse trailing commas in array and object literals incorrectly. If you are targeting newer versions of JS, set the appropriate language_in option. at line 5 character 2 in HelloWorld.js BG: "background", ^ 앵? 번역을 해보니 자바스크립트에서 쉼표가 잘못되서 IE8에서 문제가 될 수 있다나 머라나;;; (대충 표준에 안 맞다는 소리입니다.) 2. 해결 방법..
웹디자인의 이슈 중 하나가 반응형 디자인입니다. 반응형 디자인이라는 건 해상도가 변해도 다른 작업 없이 레이아웃이 구성되도록 하는 것을 말합니다. (유동 디자인, 능동형 디자인 등으로 부릅니다.) 해상도에 따라 다른 화면이 아닌 일정한 화면을 보여주는 방식으로 크로스 브라우징을 해결하려고 하는 생각은 이전부터 있었습니다. 그런데 이 방법의 가장 큰 문제는 한가지 스타일만 가지고는 이 문제를 해결할 수 없다는 점입니다. 그래서 생겨난 것이 '@media'인데.... 미리 정의한 타입들만 가지고는 한계가 있다는 문제점이 있습니다. (참고 : sixmen - Media Query ) 그래서 CSS3에서는 미디어 쿼리라는 것이 생겼습니다. 1. 문제의 시작 특정 범위의 해상도에서는 한가지 스타일만 가지고 있어도..
이전 글에서 뷰 엔진에서 모델의 특정 속성을 가지고 오는 방법을 알려 드렸습니다. (참고 : [Asp.net MVC 4] 뷰 엔진에서 모델(Model)의 속성(Attribute) 표시하기 ) 그런데 'HtmlHelper'는 컨트롤러에서 사용할 수 없다고 했습니다. 결국 컨트롤러에서 해당 메서드를 사용하고 싶다면 'HtmlHelper'를 빼고 동작하는 메서드가 있어야 합니다. 1. 확장메서드 복습하기 전글에서 사용한 코드를 다시한번 보죠. using System.Linq.Expressions; namespace System.Web.Mvc.Html { public static class DisplayDescriptionExtensions { public static string GetDescription(t..
남이 만들어논 코드 분석하고 있는데.... 0x80004001 - Microsoft JScript 런타임 오류: 구현되지 않았습니다. 분명 잘 작동하는 코드이고 검증이 끝난 코드인지라 물어볼때도 없고 ㅡ.-;;; 구글 검색해도 그렇다할 내용은 나오지 않습니다. 그러던중...... 아! 제가 서버에 원격으로 붙어서 작업 하고 있는데 서버는 사운드카드가 없습니다.... "에이~설마" 하면서 개발피씨에서 돌려보니 돌아가네 ㅡ,.ㅡ;;;; 문제는 사운드카드가 없는 pc에서는 오류때문에 웹페이지만 멀뚱멀뚱 봐야 한다는 것입니다-_-;;;;;; 그러니 사운드카드가 사용가능한지 확인하고 나서 사운드 관련작업을 해야 한다는 이야기 입니다. ㅎㅎㅎ 사운드카드 자체를 확인할 방법은 편법(윈도우 미디어 플래이어의 'IsSo..
오류 발견 요즘 만들게 있어서 자바스크립트 공부를 다시 하고 있는데... 만들다 보니 에러 메시지도 없이 자바스크립트가 작동하지 않아 개발자도구를 열어보니... SCRIPT28: 스택 공간 부족 연관글 영역 해결 방법 검색해보니 보통은 무한루프가 돌면 발생한다고 합니다. 결국 이 오류 나면 코드를 다시 확인해봐야 한다는 거죠. 찾는 방법은 1) 무한루프가 의심되는 곳에 로그를 찍어 봅니다. - console.log("로그"); 2) 해당 지점에 중단점을 찍어보고 호출 스택이 어디서 반복되는지 확인해 봅니다. 마무리 초보적인 실수이면서도 찾기 힘들 수도 있는 버그입니다 ㅎㅎㅎ
'레이저(Razor)'같은 뷰엔진에서 몇몇 속성은 이미 만들어져 있는 메서드를 가지고 출력이 가능합니다. 대표적인 메서드가 '@Html.DisplayNameFor'나 ''@Html.ValidationMessageFor같은 것들입니다. 문제는 정된 메서드만으로는 모든 속성을 표시할 수 없다는 점입니다. 1. 문제의 시작 다음과 같이 모델을 선언합시다. /// /// 단어 /// [DisplayName("단어")] [Required(ErrorMessage = "단어를 적어 주세요.")] [Display(Description = "문제로 쓰일 단어 입니다.")] public string Word { get; set; } 위 코드를 뷰로 보내서 바인딩한다면 '@Html.DisplayNameFor'를 사용하면 '..
마이크로 소프트나 다른 회사에서 만든 컴포넌트들을 쓰다 보면 흔히 격는 일 중에 하나가 제공되지 않는 기능이 필요할 때입니다. 보통은 해당 클래스를 상속받는 클래스를 만들거나 별도의 클래스를 만든 후 그 클래스 안에 기존 클래스를 생성하고 새로 만든 클래스에 기능을 추가 하는 방법도 있습니다. 그런데 일관성을 높이려면 A클래스에 속한 기능을 B클래스를 선언해서 사용하는 건 그리 좋은 방법이 아닙니다. 기존에 A클래스를 참조하고 있는 모든 기능을 B클래스로 옮겨야 하기 때문이죠. (안 그러면 어떤 건 A를 참조하고 어떤 건 B를 참조하는 불상사를 많이 보게 됩니다-_-;) 이럴 때 사용하는 것이 확장 메서드(Extension Methods) 입니다. 이름 그대로 남이 만들어 놓은 객체에 내가 원하는 기능을..