본문 바로가기

프로그래밍458

Subversion Server 설치하기 소프트웨어 형상 관리 도구인 Subversion 서버를 설치해 보겠습니다. 요즘은 Git 이 대세이기는한데, 아직도 Subversion 이 많이 사용되고 있습니다. 현재 Subversion 은 아파치 프로젝트로 개발중입니다. http://subversion.apache.org/ 에서 관련 정보를 찾아 볼 수 있습니다. 소스 컴파일 해서 설치하는 것은 힘들므로 바이너리 버전을 배포하는 곳을 찾아서 설치를 합니다. 이번에 설치하게될 바이너리 배포판은 Collabnet 에서 AGPL v3.0 라이센스로 배포하고 있는 Collabnet Subversion Edge 입니다. 윈도우용과 리눅스용을 구할 수 있습니다. 윈도우용을 설치해 보겠습니다. 플랫폼이 Windows 2008, Windows 2012로 되어 있지.. 2018. 4. 10.
GIMP 2 사용법 - 선택 영역 따라그리기 이미지상에 단순한 사각형, 원 등을 그리기 위해서 붓과 펜 같은 툴을 사용하면 정확한 모양을 그리기 힘듭니다. 선택영역 따라 그리기 기능은 사각형, 원등의 선택 영역을 만들고 그 경계를 따라 그리는 기능으로 깔끔하게 사각형이나 원을 그릴 수 있습니다. 먼저 화면을 캡쳐해서 이미지를 만드는 것을 보겠습니다. 캡쳐 프로그램을 사용하지 않고, 윈도우 기본 캡쳐 기능을 사용해보겠습니다. "Prt Sc"(Print Screen) 버튼을 누르면 현재 화면 전체를 캡쳐합니다. Shift + Prt Sc 버튼을 누르면 현재 활성화되어 있는 창 만을 캡쳐 합니다. 캡쳐 후에 GIMP를 창을 띄우고 Ctrl + v 버튼을 누르면 캡쳐된 내용으로 이미지가 만들어 집니다. 참고로 GIMP에 이미지를 띄워둔 상태에서 Ctrl .. 2018. 4. 10.
PHP 클래스 - 오버라이드(Override) PHP 클래스에서 오버라이드는(Override) 부모 클래스의 메소드를 재정의 하는 것을 뜻합니다. 재정의시에는 메소드명과 인자가 동일해야 합니다. 접근제어자는 같거나 더 많이 허용하는쪽으로 지정할 수 있습니다. 메소드명이 같은데 인자가 다르면 에러가 발생합니다. 다른 객체 지향언어는 메소드 오버로딩(overloading) 이라고 해서 메소드의 이름은 같고, 인자가 다른 메소드를 정의하여 주어지는 인자에 따라 다른 메소드가 호출되도록 할 수 있지만, PHP 는 오버로딩은 지원하지 않습니다.(PHP에도 오버로딩이라는 기능이 있습니다. 하지만, 이 기능은 일반적인 객체 지향 언어에서의 오버로딩과는 다른 기능 입니다.) 이 오버라이딩 규칙은 생성자(__constructor)에도 동일하게 적용됩니다. class.. 2018. 4. 10.
자바스크립트 클로저(Javascript Closure) 사용법 자바스크립트에서 클로저라는 것을 잘 이해하기 위해서는 프로그래밍 언어에서 사용되는 몇가지 개념들을 먼저 알아두면 좋을 것 같습니다. 그것들은 일급 객체(first-class object)또는 일급 함수(first-class function), 변수 범위, 중첩 함수 와 같은 것들 입니다. 1. 일급 객체 또는 일급 함수 일급 객체(first-class object)에 대한 정의를 위키피디아에서 찾아 보았습니다. 원문 : https://en.wikipedia.org/wiki/First-class_citizen "프로그래밍 언어를 디자인 할때 주어진 프로그래밍언어에서 일급 시민(또는 일급 타입, 일급 객체, 일급 엔티티, 일급 값)은 다른 엔티티들이 일반적으로 이용 가능한 모든 연산을 지원하는 엔티티를 뜻합.. 2018. 4. 10.
리스크웨어(Riskware)가 무엇인가? 알약이 실시간 검사에서 php.exe 파일을 Misc.Riskware.Phptool로 잡았습니다. 위험도는 보통인것 같습니다. 이 프로그램은 테스트용 PHP 웹 사이트를 띄우기 위해서 Microsoft Webmatrix 를 사용하는데에 필요한 파일 입니다. 설치는 Microsoft Web Platform Installer를 통해서 설치가 된 것입니다. 이걸 치료를 하면 삭제가 되고, 검역소로 이동될 것으로 예상됩니다. 일단은 취소를 하고, 리스크웨어(Riskware)가 무엇인지 찾아 보았습니다. 다음 정의는 kaspersky 사이트에 나온 내용을 요약한 것입니다. "리스크웨어는 정상적인 프로그램이지만, 만약 악의적인 사용자에 의해 데이터를 삭제, 차단, 수정, 복사하거나 컴퓨터 또는 네트워크의 성능을 저.. 2018. 4. 10.
자바스크립트 배열(javascript array) 사용법 배열은 인덱스를 가지는 복수의 자료를 저장할 수 있는 자료구조 입니다. 데이터는 순차적으로 저장되며 중복이 가능합니다. 저장된 데이터에는 인덱스를 이용하여 접근이 가능합니다. 자바스크립트에서 배열의 사용법을 알아보겠습니다. 1. 배열 생성하기 배열을 생성하는데는 예전 방식인 new 명령을 사용하는 방법과 리터럴 표기법(literal notation) 을 사용하여 생성하는 방식이 있습니다. // 길이가 0인 예전 방식의 배열 생성 var myArray1 = new Array(); // 길이가 10인 예전 방식의 배열 생성 // 10개의 자리에는 아무것도 들어 있지 않습니다. var myArray2 = new Array(10); // 길이가 0인 literal notation 방식의 배열 생성 var myA.. 2018. 4. 10.
jQuery 플러그인 2 - 기본값 사용자 재정의 아래의 예제는 이전 글 "jQuery 플러그인 1 - 기본적인 플러그인 만들기" 에서 마지막에 보았던 플러그인에 기본값을 제공하는 예제 입니다. (function($) { $.fn.greenify = function( options ) { // 기본 옵션을 제공하는 가장 간단한 방법입니다. var settings = $.extend({ // 이것이 기본값들입니다. color: "#556b2f", backgroundColor: "white" }, options ); // 설정 변수를 기반으로 스타일을 지정합니다. return this.css({ color: settings.color, backgroundColor: settings.backgroundColor }); }; }(jQuery)); 이 플러그인을.. 2018. 4. 10.
원본과 같은 비율로 썸네일(Thumbnail) 이미지 만들기 이전에 작성한 글 "Java로 썸네일(Thumbnail) 이미지 만들기" 에서는 만들 썸네일 이미지의 비율에 맞게 원본 이미지를 최대한 Crop한 다음, 그 크롭된 이미지로 썸네일을 만들어 보았습니다. 이 경우 썸네일 리스트가 전체적으로 보기 좋게 구성됩니다. 단점으로는 원본 이미지 비율이 썸네일 비율과 많이 차이가 날 경우, 그리고 이미지 중앙이 중요한 부분이 아닐 경우에는 이미지가 중앙을 기준으로 잘리므로 원하는 의미를 나타내기 힘들 경우가 있습니다. 이번에 해볼 방법은 썸네일 이미지 내에 원본 이미지를 축소해서 넣은 것처럼 원본 비율을 유지하도록 만드는 것입니다. 이 방법을 사용하면 썸네일에서도 축소된 원본 전체를 볼 수 있다는 것이 장점이 되겠습니다. 단점은 원본 비율에 따라 좌/우 또는 상/하에.. 2018. 4. 10.
jQuery 플러그인 1 - 기본적인 플러그인 만들기 jQuery 플러그인은 jQuery의 프로토타입 객체를 확장하는 새로운 메소드를 추가하는 것입니다. 우리가 새로 추가한 기능은 jQuery의 모든 기능을 상속 받아 바로 사용할 수 있습니다. jQuery에 기능을 추가한다는 개념이지만, 우리가 사용할 때는 jQuery의 기능을 모두 사용할 수 있는 우리의 기능을 만든다고 생각하면 되겠습니다. 물론 jQuery 플러그인으로 기능을 만들지 않고 직접 기능을 수행하는 클래스를 만들고, 필요한 곳에 jQuery를 사용하도록 하는 방법도 있습니다. 어떤 방법으로 만들지는 자신의 선택이겠습니다. 자신이 편리한 방법으로 만들면 될 것 같습니다. 필요에 의해 jQuery플러그인을 만들어야 겠다고 생각을 했다면, 먼저 미리 만들어져 있는 것들중에 같은 기능을 하는 프로그.. 2018. 4. 9.
Eclipse scratchpad 사용하기(code snippets 즉시 실행) 자바 프로그래밍중에 간단한 코드를 테스트할 필요가 많이 생깁니다. 예전이라면 main 메소드를 가진 테스트용 클래스를 사용해서 테스트를 하였습니다. 요즘은 unit 테스트를 사용하는 것이 일반적이겠습니다만, 코드 조각(snippet)을 클래스나 메소드 선언 없이 바로 실행해 볼 수 있는 방법이 있습니다. 이클립스 메뉴에서 File -> New -> Other... 를 선택합니다. Select a wizard 창에서 Java -> Java Run/Debug -> Scrapbook Page 를 선택하고 Next 를 누릅니다. 여기서는 src/test/java 폴더를 parent 폴더로 선택하고, 파일명은 test 를 입력하고 Finish를 누릅니다. test.jpage 파일이 생성됩니다. 테스트 코드를 입력.. 2018. 4. 9.
오라클 ALTER 명령을 사용해서 테이블 변경하기 ALTER 명령어를 사용해서 오라클 테이블 구조를 변경하는 방법에 대해 알아봅니다. 1. 테스트용 테이블 생성 스크립트 입니다. CREATE TABLE TB_BOARD ( NUM NUMBER(20,0) NOT NULL, NAME VARCHAR2(20) NOT NULL, TITLE VARCHAR2(100) NOT NULL, CONTENT CLOB, D_CODE VARCHAR(20), READ_COUNT NUMBER(10,0) DEFAULT 0 NOT NULL, WRITE_DATE DATE NOT NULL ); CREATE TABLE TB_DEPT ( D_CODE VARCHAR2(20) NOT NULL, D_NAME VARCHAR2(255) NOT NULL ); -- TABLESPACE 사용 CREATE T.. 2018. 4. 9.
파이썬 문법 9 - 클래스(class) 만들기 파이썬은 객체지향 프로그래밍(Object Oriented Programming)을 할 수 있는 클래스 (class)를 지원합니다. 지금까지 봐왔던 데이터를 정의하고, 함수를 이용해서 데이터를 변형하여 원하는 결과를 얻는 형태의 프로그래밍 방식을 절차지향 프로그래밍 이라고 합니다. >>> data = [4,1,5,3,2] >>> data = sorted(data) >>> data [1, 2, 3, 4, 5] >>> 객체 지향 프로그래밍은 먼저 객체를 정의합니다. 객체는 멤버 변수(데이터)와 멤버 메소드(자신의 상태(데이터)를 변경하는 함수) 로 구성되어 집니다. 이러한 객체들이 서로 상호작용하여 객체의 상태가 바뀌어 원하는 결과를 얻는 프로그램 방식이 객체지향 프로그래밍 입니다. >>> data = [4,.. 2018. 4. 9.
IE 6~8 에서 CSS Pseudo class 및 Attribute Selector 지원하기 CSS3에서 지원되는 의사 Pseudo class 및 Attribute Selector들은 CSS의 효용성을 더욱 높여 줍니다. 동적으로 갯수가 변하는 의 행이나 열, 의 아이템 등의 첫 번째와 마지막에만 스타일을 달리하는 경우는 많이 사용되는 예가 되겠습니다. 이런 상황에서 :first-child, :last-child 등이 지원 되지 않으면 프로그램에서 루프를 돌면서 출력을 하다가 처음과 끝은 판단해서 다른 스타일을 붙여주는 형식으로 처리하게 됩니다. 이러면 루프내의 조건문으로 인해 코드가 보기 깔끔하지 못하게 됩니다. 다행히도 CSS3 에서는 이러한 특정위치의 요소를 선택할 수 있는방법이 제공됩니다. 하지만 오래된 브라우저를 지원해야 한다면 polyfill을 적용해야 할 것입니다. selectivi.. 2018. 4. 9.
PHP 클래스 상속(Inheritance) 이번에 알아볼 내용은 PHP 에서 클래스(class)를 사용할 때 객체간에 부모, 자식 관계를 가지도록 해주는 상속(inheritance)에 대해서 알아보겠습니다. 상속(inheritance)을 부모 - 자식 관계로 표현하는 것은 무리가 없어 보입니다. 자식이 부모로부터 뭔가를 물려 받는것이 상속이기 때문입니다. 중요한 것은 자식이 부모로부터 모든 것을 물려 받았기 때문에 자식은 원래 자신의 것도 있고, 물려 받은것도 있으므로 부모보다 더 많은 것을 가진다는 것입니다. 프로그래밍 언어적인 측면에서의 설명은 좀 다르게 할 수 있습니다. 어떤 객체를 만드는데 있어서 공통적인 부분을 뽑아서 부모로 하고, 개개의 객체에 특징적인 부분은 자신이 가지고 있도록 만드는 것이 상속 관계가 됩니다. 부모, 자식간에 재산.. 2018. 4. 9.
Windows 10 꺼둬도 좋을 기능들 Windows 10은 사용자의 편의를 위해서이겠지만 많은 정보를 Microsoft로 보내 공유하거나, 많은 개인정보가 제공되어지고, 백그라운드에서 실행되는 프로그램들도 많이 있습니다. 편안함은 조금 포기하고, 데이터 소모량, 배터리등을 조금 더 아끼고, 개인정보를 좀더 덜 제공하는 쪽으로 선택할 수 있습니다. 1. 윈도우즈 업데이트시 대역폭 공유를 사용 안함 Windows 10의 업데이트 프로그램은 Torrent 처럼 여러곳에서 다운로드 받고, 나의 컴퓨터도 다운로드 받은 업데이트 프로그램을 다른 사람에게 전송하도록 됩니다. 설정에서 "업데이트 및 복구" -> "Windosw 업데이트" 에서 "고급 옵션" 을 선택합니다. "고급 옵션" 화면에서 아래쪽으로 내려가면 "업데이트 제공 방법 선택" 을 클릭하고.. 2018. 4. 9.