2월, 2019의 게시물 표시

[HTML] 숫자 형식의 input 엘리먼트의 증감값 설정하기

이미지
input[@type='number']의 증감폭 설정   벌써 HTML5가 릴리즈된지도 4년이 지났습니다. HTML5의 input 엘리먼트에는 다양한 type 속성을 줄 수 있죠. email, password, text, number, 등등...   이번 포스트에서 쓰이는 타입은 number 입니다. 숫자를 입력하는 input 엘리먼트의 증감폭 설정 방법을 알려드릴 것이기 때문이죠. 1씩 증감하는 기본값   <input type="number">로 가장 단순히 엘리먼트를 생성해봅시다. 대부분의 브라우저에서 우측에 위, 아래 화살표가 있는 버튼이 생기며 해당 버튼을 누르거나 키보드 위/아래 방향키를 눌러 숫자를 1씩  증감시킬 수 있습니다. 기본값인 1씩 증감되는 모습 원하는 값만큼 증감되도록 설정해보자   하지만 다양한 경우에서 1이 아닌 값이 증감되는 것이 편할 수 있습니다. 예를 들어서 쇼핑몰의 최소 가격 비교 가능 금액이 10원이라면, 화살표를 클릭할 때 10원씩 증감되는 것이 편하겠죠. 물론 언뜻 그냥 키보드로 입력하면 되는걸 왜 굳이 설정까지 해야하나 할 수 있겠지만, 제가 이쪽 일을 하면서 알게 된 사실은 은근히 키보드보다 마우스를 선호하는 사람이 꽤 많다는 것입니다.   아무튼, 그럼 10씩 증감시키려면 어떻게 해야 하느냐? 바로 step 속성 을 활용하시면 됩니다. 지금 상황은 10씩 증감시켜야 하는 상황이니, 다음과 같이 작성하시면 됩니다. <input type="number" step="10">   그럼 아래와 같이 작동하게 됩니다. step 속성 값인 10씩 증감되는 모습   물론 해당 속성의 값은 숫자라면 무엇이든 쓸 수 있습니다. -1, 0, 1, 2, 2.2, 7.7 등등 뭐든지요. 단, 0 이하의 값을 입력하면 무조건 1씩 증감 된다는 사실만 기억하시면 됩니다.

[MySQL EF 6] System.NotSupportedException: Unable to create a constant value of type [타입명] 예외 해결 방법

  해당 예외가 발생하는 이유는 여러가지가 있겠으나 이번에 제가 경험한 내용을 바탕으로 글을 쓰도록 하겠습니다. 이 방법으로 해결이 안 되는 분께선 구글신의 힘을 빌리도록 하시길 바랍니다. 잘못된 비교 로직   여기 3개의 기본 키를 포함한 원시 타입과 1개의 외래 키 객체를 지니는 모델이 있습니다. public class ExampleModel { [Key] public int Id { get; set; } public decimal UpperLimitPrice { get; set; } public decimal MaximumPrice { get; set; } public UserModel User { get; set; } }   그리고 우리는 수많은 Example 중에서 특정 User 와 일치하는 레코드를 가져오고자 합니다. 직관적인 예를 들면, 게시판이 있는 웹 서비스에서 '내 글 보기'와 같은 기능을 구현 한다고 생각하시면 편합니다.   이때, 아래와 같이 코딩을 하면 이 포스트의 제목과 같은 예외가 발생하게 됩니다. _context.ExampleList.Where(ex => ex.User == userClient);   왜일까요? 이유는 바로 EF에서 원시 타입이 아닌 객체의 비교를 지원하지 않기 때문 입니다. 즉, string, int, long, float, double, decimal, ... 이런 타입이라면 비교가 가능하지만, 사용자가 직접 만든 클래스의 객체, 여기선 UserModel의 객체에 대한 비교는 지원하지 않는다는 것이죠.   이유를 생각해보면 간단합니다. 우리가 SQL로 SELECT 쿼리를 날릴 때, 예를 들어 게시판에서 특정 유저가 쓴 글의 레코드만 가져온다고 하면 SELECT id, title, body, registeredDate FROM board WHERE userId = '[외래 키로 연결된 유저 테이블의 ID]' 이런 식

[C#/.Net Framework] Byte Array를 16진수 문자열로 바꾸는 간편한 방법

BitConverter.ToString(byte[] array)   stirng BitConverter.ToString  메서드를 사용하면 byte array를 간편하게 16진수 문자열로 변환할 수 있습니다. 예제 BitConverter.ToString(new byte[] { 10, 20, 30, 40 }); // => "0A-14-1E-28" BitConverter.ToString(new byte[] { 15, 17, 42, 65, 91 }).Replace("-", ""); // => "0F112A415B"