1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | // charAt() : 해당 하는 인덱스의 케릭터를 반환한다. console.log('charAt() ======================='); var value = 'SPORTS'; console.log(value.charAt(1)); console.log(value[3]); // ECMA Script5 이후 부터 사용이 가능하다. // charCodeAt() : 해당 하는 문자열의 인덱스의 유니코드를 반환한다. console.log('charCodeAt() ======================='); var value = 'abAB', len = value.length; for (var k = 0; k < len; k++) { console.log(value.charCodeAt(k)); } console.log(value.charCodeAt(7)); // NaN 이 출력됨. // fromCharCode() : 해당 하는 유니코드의 문자열을 반환한다. console.log('fromCharCode() ======================='); console.log(String.fromCharCode(65, 66, 97, 98)); // fromCharCode()는 메서드가 아닌 함수이다. !! //var str = new String(); //str.fromCharCode(); 로 사용하지 못한다. 함수는 오브젝트를 모르기때문에 오브젝트.함수명으로 사용한다. // concat() : 문자열을 합칠때 사용함. console.log('concat() ======================='); var value = 'sports: '; console.log(value.concat(' soccer :',' 11')); // indexOf() : 문자열에 일치하는 인덱스 반환 존재하지 않으면 -1 를 반환함 console.log('indexOf() ======================='); var str = '가나다가나다'; console.log(str.indexOf('다')); console.log(str.indexOf('다'), 4); console.log(str.indexOf('나다')); console.log(str.indexOf('다', 15)); // lastIndexOf() : 문자열에 일치하는 마지막 인덱스를 반환한다. console.log('lastIndexOf() ======================='); var value = '12341234'; console.log(value.lastIndexOf('3')); console.log(value.lastIndexOf('3',5)); console.log(value.lastIndexOf('34')); // match() : 정규표현식으로 매치되는 결과를 반환한다 console.log('match() ======================='); var value = 'Sports'; console.log(value.match(/s/)); // 소문자 s를 찾음 console.log(value.match('S')); // 대문자 S를 찾음 console.log(value.match(/s/ig)); // ig: ignore global 대소문자를 구분하지 않음. 배열로 반환 s가 2개이니까. console.log(value.match('spt')); // null 이 반환됨 console.log(/S/.test(value)); // 속도가 더 빠름 // replace() : 매치결과를 지정한 값으로 대체 후 반환한다 console.log('replace() ======================='); var value = 'abcabc', trimExp = /^\s+|\s+$/g,// 정규표현식을 통하여 trim을 수행한다 ie6~8 ES3에선 trim()이 없음 base = ' abcd '; console.log(base.replace(/a/g, 'A')); console.log(value.replace(trimExp, '')); console.log(base.length); console.log(value.length); // search() : 검색된 첫번째 인덱스를 반환한다. console.log('search() ======================='); var value = 'cbacba'; console.log(value.search(/a/g)); console.log(value.search('K')); // substring() : 시작에서 끝 직전까지 인덱스의 문자열 값을 반환한다. 수식으로 나타내면 begin == idx < end console.log('substring() ======================='); var value = '01234567'; console.log(value.substring(2, 6)); console.log(value.substring(5, -1)); console.log(value.substring(-7, 2)); console.log(value.substring(5, 1)); console.log(value.substring()); console.log(value.substring(2)); console.log(value.substring(3, 20)); // substr() : 시작위치에서 문자길이만큼의 값을 반환한다. 수식으로 나타내면 begin == idx <= end console.log('substr() ======================='); var value = '01234567'; console.log(value.substr(0, 3)); console.log(value.substr(3)); console.log(value.substr()); console.log(value.substr(-3, 3)); // split() : 구분자로 분리하여 배열로 반환한다. console.log('split() ======================='); var result, value = '_012_345'; result = value.split('_'); console.log(result); console.log(result.length); console.log(value.split('_',2)); // 2번째 인자는 엘리먼트수이다. console.log(value.split('AA')); console.log(value.split()); // 모두 분리 console.log(value.split('')); // toLowerCase() : 문자를 소문자로 반환한다. console.log('toLowerCase() ======================='); var value = 'ABCDE'; console.log(value.toLowerCase()); // toUpperCase() : 문자를 대문자로 반환한다. console.log('toUpperCase() ======================='); var value = 'abcde'; console.log(value.toUpperCase()); | cs |
Dev Diary...
- JavaScript String Object 의 메서드 사용방법 예 2014.06.07
- JavaScript의 내부 프로퍼티와 외부 프로퍼티의 차이 그리고 캡슐화 2014.06.07
- JavaScript의 Object 인스턴스 사용방법과 이해 2014.06.07
- Quartz 라이브러리 연동을 통한 스케쥴러 구현 2014.06.06
JavaScript String Object 의 메서드 사용방법 예
JavaScript의 내부 프로퍼티와 외부 프로퍼티의 차이 그리고 캡슐화
JavaScript의 내부 프로퍼티와 외부 프로퍼티의 차이
그리고 캡슐화
아래는 ECMA Script5 스펙에 정의되어있는 Internal Properties(내부 프로퍼티) 이다.
내부 프로퍼티는 앞뒤로 [[프로퍼티명]] 으로 되어있으며 개발자가 직접적으로 해당 프로퍼티의 속성을 접근할 수가 없다.
이에반해 외부 프로퍼티는 개발자가 직접 접근이 가능한 속성이다.
객체지향적인 개념으로 볼때 내부 프로퍼티는 블랙박스(외부에 자신의 모습을 보여주지않는) 라고 할 수 있다.
자바에서는 블랙박스를 private 접근제어자를 통해 구현하지만 JavaScript에서는 접근제어자가 따로 있지 않다.
하지만 제어자가 없을뿐이지 코드를 캡슐화 할수 없다는 뜻은아니다.
아래와 같이 객체안에서 var 로 선언한 property 나 method는 내부에서만 사용이 가능하다. 이것이 자바스크립트의
캡슐화라 볼수 있을것이다.
[ 캡슐화 코드 ]
JavaScript의 Object 인스턴스 사용방법과 이해
JavaScript의 Object 인스턴스 사용방법과 이해
JavaScript 는 기본적으로 OOP(Object Oriented Programming) 의 특징을 가지고 있기 때문에 여타 OOP언어에서 Object 를 사용하기 위해
인스턴스를 생성하는 것과 마찬가지로 new 키워드를 통해서 Object 를 생성할 수 있다.
그러나 JavaScript 는 Built-In이라는 개념이 있기때문에 궂이 new 키워드를 통해서 인스턴스를 생성하지 않아도 해당 Object를 호출할 수 있다.
Built-In Object에서만 인스턴스없이 호출이 가능하다는것을 기억하자 !!
1. new 키워드를 통한 Object 인스턴스 화 이후에 concat() 을 호출
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | /** * 기본 적인 객체지향 프로그램은 new 키워드를 이용한 인스턴스를 생성한 후에 * 해당 오브젝트의 메서드를 찾아간다. * 자바스크립트에는 빌트인 개념이 있기때문에 new 로 인스턴스를 생성하지 않아도된다. * 불필요 행사코드가 많아짐 비추.. * * */ var obj, result; obj = new String(); result = obj.concat('sports', 'soccer', 11); console.log(result); obj = new Array(); result = obj.concat(['sports','soccer',11]); for(var i = 0; i < result.length; i++) { console.log(result[i]); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | /** * JavaScript 에서는 객체지향언어에서의 기본 규칙인 * 인스턴스를 생성하지 않고도 해당 오브젝트의 메서드를 * 호출할 수 있다. * 이렇게 간단하게 호출할 수 있게 하여 행사코드를 * 언어적인 측면에서 없애주고 코드의 유연성을 올려준다. * 이는 빌트인 오브젝트 덕분이다!!! * */ var obj, result; result = 'sports'.concat('soccer', 11); console.log(result); console.log(typeof result); result = ['sports','soccer'].concat(11); console.log(result); console.log(Array.isArray(result)); |
Quartz 라이브러리 연동을 통한 스케쥴러 구현
Quartz 라이브러리 연동을 통한 스케쥴러 구현
Apache Camel 프로젝트의 하위 프로젝트인 Quartz 이용하면 Unix 나 Linux 에서 사용하는 crontab 과 같은 스케쥴러를 손쉽게 구현하고 제어 할 수 있다.
Quartz 는 기본적으로 log4j 를 사용하여 로그를 출력하기때문에 Quartz 사용시 log4j 라이브러리를 먼저 연동해줘야 정상적으로 사용이 가능하다 .
이번에 나름 독자적인 배치 모듈을 개발하다 보니 Quartz 를 상당히 유용하게 사용하였다.
공식 사이트 링크 : http://camel.apache.org/quartz2.html
참조 라이브러리
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | import org.quartz.CronScheduleBuilder; import org.quartz.CronTrigger; import org.quartz.Job; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.TriggerBuilder; /** * Quartz 를 사용한 CronScheduler 구현 * * @author digimon1740 * */ public class JobScheduler { String cronExp; Class<? extends Job> clazz; public JobScheduler(Class<? extends Job> clazz, String cronExp) { this.clazz = clazz; this.cronExp = cronExp; } public void triggerJob() { Scheduler sch = null; SchedulerFactory schFactory = null; // schedule the job // this.clazz 는 기본적으로 JobExecuter 클래스이다. JobDetail job = JobBuilder.newJob(this.clazz) .withIdentity(this.clazz.getName()).build(); // batch.properties 에서 크론 표현식을 가져와 Trigger를 생성 CronTrigger cronTrigger = TriggerBuilder.newTrigger() .withIdentity("crontrigger", "crontriggergroup1") .withSchedule(CronScheduleBuilder.cronSchedule(this.cronExp)) .build(); try { schFactory = new service.StdSchedulerFactory(); sch = schFactory.getScheduler(); sch.start(); // JobExecuter.class Start sch.scheduleJob(job, cronTrigger); } catch (SchedulerException e) { } } public static void main(String[] args) { // 매일 오전 2시에 수행 JobScheduler js = new JobScheduler(JobExecuter.class, "0 0 2 * * ?"); js.triggerJob(); } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; /** * Job 인터페이스의 execute() 를 구현함으로써 * Quartz 의 스케쥴링을 이용할 수있다. * * @author digimon1740 * */ public class JobExecuter implements Job { @Override public void execute(JobExecutionContext jec) throws JobExecutionException { // / 스케쥴러에 의해 실행될 Job System.out.println("스케쥴러 수행중.."); } } | cs |
'JAVA' 카테고리의 다른 글
MAXMIND GeoIP를 이용한 클라이언트 접속 국가 정보 확인 (1) | 2014.07.22 |
---|---|
Locale 클래스를 이용한 표준 국가 명 한글로 얻어오기 (1) | 2014.07.01 |
외부 설정파일을 읽어들여 값을 반환하는 ConfigInjector 클래스 (0) | 2014.05.06 |
Filter 클래스를 이용한 호환성보기 헤더 변조 (0) | 2014.03.17 |
파일확장자를 필터링 하는 클래스 - FileExtFilter (0) | 2014.03.06 |