프로그래밍/웹 관련 28

[javascript] drawImage()로 이미지 회전하여 출력하기

개요 CanvasRenderingContext2D.drawImage() 함수에 대하여 알아 보겠습니다. 기본 사용법 CanvasRenderingContext2D.drawImage() 함수는 다음과 같이 3가지 형태로 이용할 수 있습니다. drawImage(image, dx, dy) drawImage(image, dx, dy, dWidth, dHeight) drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) 각 파라미터가 의미하는 것은 다음 그림과 같습니다. 이미지 회전하여 출력하기 이미지를 회전하여 출력하기 위해서는 좌표계를 회전하는 rotate(), translate() 및 save(), restore() 함수도 알고 있어야 합니다. ..

[javascript] NaN (Not a Number), isNaN(), Number.isNaN() 에 대하여

NaN (Not a Number) 이란? "NaN" (Not a Number)은 영문 그대로 숫자가 아닌 상태를 표시하는 전역 속성입니다. 그래서 그 자체는 상수처럼 불변이고, "NaN"은 서로 같지 않습니다. "NaN" 은 "Number.NaN"와 동일합니다. NaN == NaN // false NaN == Number.NaN // false NaN 값 비교하기 NaN과 비교하기 위하여 isNaN() 함수나 Number.isNaN() 함수를 이용할 수 있습니다. 그런데, 두 함수가 조금씩 차이가 있습니다. isNaN() 함수의 경우 함수의 매개변수로 전달된 인자가 숫자로 변환이 가능한지를 확인하고, Number.isNaN() 함수는 인자 자체가 "NaN" 값인지를 확인합니다. let a = 1; isN..

[Javascript] Array.reduce() 사용하기

개요 배열 각 요소들에 대한 처리 후, 하나의 형태로 값을 얻어야 하는 경우가 상당히 많은데, 그 동안은 for, forEach 등의 구문을 많이 사용했었습니다. 그러다가 reduce() 함수가 아주 유연하게 이용될 수 있음을 알게 되어 소개해 보고자 합니다. 각 배열 요소 다루기 다음은 간단한 배열의 합을 for 문을 이용하여 구하는 일반적인 코드입니다. const array1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]; let sum = 0; for (let index = 0 ; index < array1.length ; index++) sum += array1[index]; console.log(`array1 summary = ${sum}`); 위 코드를 reduce() 함수를 이용하여 ..

[PHP] CodeIgniter를 이용하여 REST API 구현하기

CodeIgniter 다운로드 및 REST API 개발 환경 설정 http://www.codeigniter.org 에서 최신 CodeIgniter 소스를 다운로드 받습니다. (문서 작성시점의 CodeIgniter는 3.1.10이 가장 최신버전이었습니다.) 개발하고자 하는 REST API 프로젝트 폴더에 "v1.0" 폴더에 다운로드 받은 소스를 모두 풀어줍니다. API 운영에 불필요한 다음 폴더 및 파일들은 삭제합니다. user_guide\ license.txt readme.rst "CodeIgniter" 폴더에 ".htaccess" 파일을 다음과 같이 작성합니다. RewriteEngine On RewriteBase /dapi/v1.0 RewriteCond %{REQUEST_FILENAME} !-f Rew..

[javascript] 숫자에 천단위 마다 콤마(,) 넣기

특정 숫자에 천단위 마다 콤마를 넣기 위하여 다음 정규표현식을 이용하면 간단하게 해결된다. 아래와 같이 하면, 정수형에 대해서는 아무런 문제가 발생하지 않으나, 소수점이 있는 실수형의 경우에는 오류가 발생하게 된다. function toCommaString( number ) { var regexp = /\B(?=(\d{3})+(?!\d))/g; return number.toString().replace( regexp, ',' ); } 그래서 아래와 같이, 정수형과 실수형을 구분하여 함수를 만들어서 사용한다. function toCommaStringF( number ) { var number_string = number.toString(); var number_parts = number_string.spl..

ASP에서 ABCUpload 컴포넌트 사용시 업로드 파일용량 문제

개요ASP에서 ABCUpload를 이용하여 파일 업로드 기능을 구현하면, 기본 설정 상태에서 실행하면 10MB 이상의 파일 업로드가 실패합니다. 10MB이상의 파일을 업로드 하기 위해서는 IIS 구성 파일을 수정한 이후에, IIS 서비스를 재시작해야 하고, ABCUpload 컴포넌트를 이용할 때도, 특정 속성에 한계 용량을 설정해 주어야 합니다. 1. IIS 설정직접 IIS의 설정 파일을 수정하는 방법인 경우에는 IIS 6.0(Windows2003) 이상의 운영체제를 사용중이라면, C:\WINDOWS\system32\inetsrv 폴더내에 있는 MetaBase.xml 이라는 설정 파일을 열어 AspMaxRequestEntityAllowed="204800"으로 할당되어 있는 값에 원하는 최대 전송 용량을 ..

ABCUpload4.XField.4 오류 '80040005' 발생 문제 해결

증상 및 문제확인ABCUpload를 이용하여 파일 업로드를 구현해 놓은 페이지에서 아래와 같은 오류가 발생하였습니다. ABCUpload4.XField.4 오류 '80040005' A Windows error - 액세스가 거부되었습니다. - (0x00000005) occurred. /up.asp, 줄 50 모든 파일에 대해서 발생하는 것도 아니고, 특정 몇몇 파일에 대해서만 오류가 발생하였습니다. 새로 올리는 파일은 문제가 전혀 없고, 기존 파일을 덮어 씌우는 경우에만 동일한 문제가 발생하였습니다. 파일 및 디렉토리에 보안 설정을 바꾸어도 동일한 문제가 계속 발생하였습니다. 문제 해결위와 같은 액세스 거부 오류는 크게 두 가지 경우에 발생합니다. 첫 번째는 해당 파일을 다른 프로세스에서 열어서 사용중인 경..

URL Rewrite를 위한 ISAPI Rewirte 3.0 Lite 설치기

서론 사용자들에게 좀더 친숙한 URL 정보를 제공하기 위하여 URL Rewrite를 사용하게 됩니다. URL Rewrite를 사용하는 이유로는 여러 가지가 있겠지만, 주된 이유가 검색엔진에 색인될 수 있도록 하는 검색 친화적 주소를 만들수 있다는 점(Search Engine Optimization ; SEO)과, 그밖에 프록시 및 로드 밸런싱, 접근 제한 등에도 유용하게 이용할 수 있습니다. 아파치라면 mod_rewrite를 사용하면 되지만, IIS에서는 어떤 것이 좋을까 찾던 중에 무료로 사용할 수 있는 버전이 ISAPI Rewirte 3.0 Lite 였습니다. 본 글에서는 IIS 6.0에서 ISAPI Rewirte 3.0 Lite 버전을 설치하고 간단하게 테스트까지 하는 과정을 요약 정리해 두었습니다..

특정 작업 동안 기다리기 페이지 구현하기.

PHP 작업 중에 결과 처리하는데 시간이 좀 걸리는 검색 페이지를 구현하는데 있어서, 검색 결과를 구하는 동안 페이지를 그냥 두면 검색 결과가 나올 때까지 화면에서 아무런 것도 표시되지 않아 사용자들은 답답하게 됩니다. 그리고 사용자가 검색 중임에도 결과가 너무 오래 걸려서 다시 검색을 하거나 하게 되면 검색 서버에 부하를 가중시켜 서버의 성능에 악 영향을 미치게 됩니다. 이를 방지하기 위하여 검색을 시작하면 바로 페이지에서 검색 중임을 알려주는 진행 표시를 하고, 검색이 완료되면 진행 표지 부분을 없애고 검색결과를 표시합니다. DIV 태그를 이용하여 간단하게 구현이 가능합니다. 검색 대기 중일 때 표시할 내용을 DIV 태그 내에 작성하고, 페이지가 바로 표시되도록 한 이후에, 로딩 작업이 완료되면 자바..

728x90