SMALL

JSTL 랜덤 숫자 받아오고 싶을때~

<c:set var="ran"><%= java.lang.Math.round(java.lang.Math.random() * 4445567) %></c:set>

 

출력

${ran}

 

 

LIST
블로그 이미지

SeoHW

,
SMALL

-- 테이블 생성

 

CREATE TABLE MY_DUAL AS(

    SELECT 1 ID, 2000 SALARY FROM DUAL UNION ALL

    SELECT 2 ID, 2200 SALARY FROM DUAL UNION ALL

    SELECT 3 ID, 2400 SALARY FROM DUAL UNION ALL

    SELECT 4 ID, 2600 SALARY FROM DUAL UNION ALL

    SELECT 5 ID, 2800 SALARY FROM DUAL UNION ALL

    SELECT 6 ID, 2600 SALARY FROM DUAL UNION ALL

    SELECT 7 ID, 3000 SALARY FROM DUAL UNION ALL

    SELECT 8 ID, 2600 SALARY FROM DUAL

);

 

-- 기존 테이블 컬럼만 복사해 새 테이블 생성

 

CREATE TABLE COPY_NEW_TABLE AS(

    SELECT * FROM EXIST_TABLE_NAME

    WHERE 1=2 -- FALSE

);

 

2. 컬럼 ADD, MODIFY, RENAME, DROP 사용하기 - 1

 

-- 1. 컬럼 ADD 

-- ALTER TABLE 테이블명 ADD 새 컬럼명 이름  데이터타입;

 

ALTER TABLE MY_DUAL ADD ANNUAL_INCOME VARCHAR2(1000);

UPDATE MY_DUAL SET ANNUAL_INCOME = SALARY;

 

-- 2. 컬럼 MODIFY 

-- ALTER TABLE 테이블 명 MODIFY 컬럼명 데이터타입;

 

ALTER TABLE MY_DUAL MODIFY SALARY VARCHAR2(1000);

 

-- 3. 컬럼 RENAME

-- ALTER TABLE 테이블명 RENAME COLUMN 기존컬럼명 TO 바꿀컬럼명;

 

ALTER TABLE MY_DUAL RENAME COLUMN ANNUAL_INCOME TO SALARY;

 

-- 4. 컬럼 DROP

-- ALTER TABLE 테이블명 DROP COLUMN 삭제할 컬럼명;

 

ALTER TABLE MY_DUAL DROP COLUMN SALARY;

 

3. 컬럼에 데이터가 있을때 데이터 유형 바꾸는 방법 - 2

 

-- 컬럼에 데이터가 있을때 데이터 유형 바꾸는 방법

 

-- 1. 새 이름으로 새 컬럼을 하나 생성 (ADD)

ALTER TABLE MY_DUAL ADD ANNUAL_INCOME VARCHAR2(1000);

 

-- 2. 새 컬럼에 기존 데이터를 다시 입력 (SET)

UPDATE MY_DUAL SET ANNUAL_INCOME = SALARY;

 

-- 3. 기존 컬럼 삭제 (DROP)

ALTER TABLE MY_DUAL DROP COLUMN SALARY;

 

-- 4. 새 컬럼의 이름을 기존 컬럼 이름으로 바꿈 (RENAME)

ALTER TABLE MY_DUAL RENAME COLUMN ANNUAL_INCOME TO SALARY;

 

현재 SALARY 컬럼의 데이터 유형은 NUMBER 

SALARY 컬럼은 데이터를 갖고 있다.

데이터를 가지고있는 컬럼에 대한 데이터유형 변경은 허용하지 않는다.

 

그러므로 새 이름의 필요한 데이터유형의 새로운 컬럼을 하나 생성한 뒤 

기존 컬럼이 가지고 있는 데이터를 새로운 데이터유형의 컬럼에 넣어주고(이동)

기존 컬럼을 삭제(DROP) 하고 새 이름의 새컬럼 이름을 기존 컬럼의 이름으로 바꿔주면 된다.

 

 

출처 : https://shlee0882.tistory.com/54

LIST
블로그 이미지

SeoHW

,
SMALL

https://cafe.naver.com/somenickname/9206

LIST

'알바' 카테고리의 다른 글

프로그래머 알바거리 후기  (1) 2018.01.16
블로그 이미지

SeoHW

,
SMALL

제 1절 데이터 모델의 이해

-       모델링의 특징

1.     추상화(모형화가설화)는 현실세계를 일정한 형식에 맞추어 표현한다는 것으로.. 다양한 형상을 일정한 양식인 표기법에 의해 표현한다는 것

2.     단순화는 복잡한 현실세계를 약속된 규약에 의해 제한된 표기법이나 언어로 표현하여 쉽게 이해할 수 있도록 하는 개념

3.     명확화는 누구나 이해하기 쉽게 애매모호함을 제거하고 정확하게 현상을 기술하는 것

 

-       데이터 모델링이란

1.     정보시스템을 구축하기 위한 데이터관점의 업무 분석 기법

2.     현실세계의 데이터에 대해 약속된 표기법에 의해 표현하는 과정

3.     데이터베이스를 구축하기 위한 분석/설계 과정

-       데이터 모델링의 중요성

1.     파급효과(Leverage): 데이터 구조의 변경은 전체 시스템 구축 프로젝트에서 큰 위험요소이다.

2.     복잡한 정보 요구사항의 간결한 표현(Conciseness): 데이터 모델은 구축할 시스템의 정보 요구사항과 한계를 가장 명확하고 간결하게 표현할 수 있는 도구이다.

3.     데이터 품질(Data Quality): DB에 담겨 있는 데이터는 기업의 중요한 자산이다오랜 기간 숙성된 데이터를 전략적으로 활용 가능

-       데이터 모델링의 유의점

1.     중복(Duplication): 여러 장소에 같은 정보를 저장하는 것

2.     비유연성(Inflexibility): 사소한 업무변화에도 데이터 모델이 수시로 변경됨으로써 유지보수의 어려움을 가중시킬 수 있음그래서 처음부터 발생될 모든 사건을 염두하고 모델링을 해야 된다.

3.     비일관성(Inconsistency): 같은 정보를 두 곳에서 가지고 있는데 한 쪽만 업데이트 한 경우그래서 데이터간 상호 연관 관계에 대해 명확히 정의하고 모델링을 해야 한다.

 

-       데이터 모델링의 3단계

1.     개념적 데이터 모델링추상화 수준이 높고 업무중심적이며 포괄적인 수준의 모델링 진행전사적 데이터 모델링. EA 수립시 많이 이용사용자와 시스템 개발자가 데이터 요구 사항을 발견하는 것을 지원현 시스템이 어떻게 변형되어야 하는가를 이해하는데 유용함.

2.     논리적 데이터 모델링시스템으로 구축하고자 하는 업무에 대해 Key, 속성관계 등을 정확하게 표현재사용성이 높음시스템 구축을 위해서 가장 먼저 시작할 기초적인 업무조사를 하는 초기단계에서부터 시스템 설계의 전 과정을 지원.

3.     물리적 데이터 모델링실제로 데이터베이스에 이식할 수 있도록 성능저장 등 물리적인 성격을 고려하여 설계데이터 모델이 데이터 저장소로서 어떻게 컴퓨터 하드웨어에 표현될 것인가데이터가 물리적으로 컴퓨터에 어떻게 저장될 것인가 하는 정의.

-       데이터베이스의 3단계 구조

1.     외부스키마(External Schema): View 단계 여러 개의 사용자 관점으로 구성개개 사용자가 보는 개인적 DB 스키마사용자 관점 접근하는 특성에 따른 스키마 구성

2.     개념스키마(Conceptual Schema): 개념단계 하나의 개념적 스키마로 구성 모든 사용자 관점을 통합한 조직 전체의 DB를 기술하는 것

3.     내부스키마(Internal Schema): DB가 물리적으로 저장된 형식물리적 장치에서 데이터가 실제적으로 저장되는 방법을 표현하는 스키마

 

-       좋은 데이터 모델의 요소

1.     완전성(Completeness): 모든 데이터가 데이터 모델에 정의되어 있어야 한다.

2.     중복배제(Non-Redundancy): 하나의 데이터베이스 내에 동일한 사실은 한 번만 기록하여야 한다.

3.     업무규칙(Business Rule): 데이터 모델을 활용하는 모든 사용자가 공유할 수 있도록 업무규칙을 제공

4.     데이터 재사용(Data Reusability): 데이터의 재사용성을 향상시키고자 한다면 데이터의 통합성과 독립성에 대해서 충분히 고려해야 함

5.     의사소통(Communication): 데이터 모델은 대상으로 하는 업무를 데이터 관점에서 분석하고 이를 설계하여 나오는 최종 산출물이다데이터 모델이 진정한 의사소통의 도구로서의 역할을 하게 된다.

6.     통합성(Integration): 동일한 데이터는 조직의 전체에서 한번만 정의되고 이를 여러 다른 영역에서 참조활용하는 것

 

-       엔터티의 특징

1.     반드시 해당 업무에서 필요하고 관리하고자 하는 정보

2.     유일한 식별자에 의해 식별이 가능해야 함

3.     영속적으로 존재하는 인스턴스의 집합이어야 한다.

4.     엔터티는 업무 프로세스에 의해 이용되어야 한다.

5.     엔터티는 반드시 속성이 있어야 한다.

6.     엔터티는 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다.

 

-       엔터티의 명명

1.     현업업무에서 사용하는 용어를 사용

2.     가능하면 약어를 사용하지 않는다.

3.     단수명사를 사용한다.

4.     모든 엔터터이에서 유일하게 이름이 부여되어야 한다.

5.     엔터티 생성의미대로 이름을 부여한다.

 

-       관계 체크사항

1.     두 개의 엔터티 사이에 관심있는 연관규칙이 존재하는가?

2.     두 개의 엔터티 사이에 정보의 조합이 발생되는가?

3.     업무기술서장표에 관계연결에 대한 규칙이 서술되어 있는가?

4.     업무기술서장표에 관계연결을 가능하게 하는 동사가 있는가?

 

-       비식별자관계(부모엔터티로부터 속성을 받았지만 자식엔터티의 주식별자로 사용하지 않고 일반적인 속성으로만 사용하는 경우)를 맺는 경우

1.     자식엔터티에서 받은 속성이 반드시 필수가 아니어도 무방하기 때문에 부모 없는 자식이 생성될 수 있는 경우

2.     자식만 남겨두고 먼저 소멸될 수 있는 경우

3.     여러 개의 엔터티가 하나의 엔터티로 통합되어 표현되었는데 각각의 엔터티가 별도의 관계를 가질 때

4.     자식엔터티에서 별도의 주식별자를 사용하는 것이 더 유리하다고 판단될 때

 

-       성능 데이터 모델링 고려사항

1.     데이터 모델링을 할 때 정규화를 정확하게 수행한다.

2.     데이터베이스 용량산정을 수행한다.(테이블(엔터티)별로 데이터가 대용량인지 구분하게 하기 때문에 테이블에 대한 성능고려를 엄격하게 적용해야 하는지 기준이 될 수 있음)

3.     데이터베이스에 발생되는 트랜잭션의 유형을 파악한다.

4.     용량과 트랜잭션의 유형에 따라 반정규화를 수행한다.

5.     이력모델의 조정, PK/FK 조정슈퍼타입/서브타입 조정 등을 수행한다.

6.     성능관점에서 데이터 모델을 검증한다.

 

-       로우체이닝로우 길이가 너무 길이서 데이터 블록 하나에 데이터가 모두 저장되지 않고 두 개 이상의 블록에 걸쳐 하나의 로우가 저장되어 있는 형태

-       로우마이그레이션데이터 블록에서 수정이 발생하면 수정된 데이터를 해당 데이터 블록에서 저장하지 못하고 다른 블록의 빈 공간을 찾아 저장하는 방식

 

-       슈퍼/서브타입 데이터 모델의 변환타입 비교

1. one to one type: 개별테이블 유지확장성 우수함조인성능 나쁨, I/O 성능 좋음관리용이성 좋지 않음개별 테이블로 접근이 많은 경우 선택

2. Plus Type: 슈퍼+서브타입 테이블확장성 보통조인성능 나쁨, I/O 성능 좋음관리용이성 좋지않음슈퍼+서브 형식으로 데이터를 처리하는 경우 선택

3. Single Type: 하나의 테이블확장성 나쁨조인성능 우수함, I/O 성능 나쁨관리용이성 좋음전체를 일괄적으로 처리하는 경우 선택.


- 와일드카드의 종류

1. % : 0개 이상의 어떤 문자를 의미

2. _ : 1개인 단일 문자를 의미



출처: https://crosstheline.tistory.com/111?category=693092 [이거 알아영???ㅎㅎㅎ]

LIST
블로그 이미지

SeoHW

,
SMALL

먼저 부모창에 function test(){}이라는 함수가 있다고 가정한다.


1)팝업창일경우

opener.test();

2)iframe일경우 

parent.test(); 

와 같이 호출하면 된다. (무지쉽지?) 

3) 부모창에서 iframe내 함수접근

   var ifr = document.getElementById('iframeID');

    ifr.contentWindow.function_name();

부모창에서 'iframeID'이라는 iFrame에 지정된 페이지의 function_name()함수에 접근하는 방법이다.


4) <a href='www.url.com' target='_parent'>link</a>으로 지정해도 됨. 물론 자바스크립트를 제어하는 것은 아니라서

     parent.location.href='www.url.com';과 동일한 효과만 볼수 있



출처: http://gonnie.tistory.com/entry/자바스크립트자식창에서-부마창-함수제어 [★☆괴수대백과사전☆★]

LIST
블로그 이미지

SeoHW

,
SMALL


forEach문은 아래와 같이 활용한다.


<c:forEach items="${data}" var="변수값" varStatus="status">

<td>

${status.current} 현재 for문의 해당하는 번호

${status.index} 0부터의 순서

${status.count} 1부터의 순서

${status.first} 첫 번째인지 여부

${status.last} 마지막인지 여부

${status.begin} for문의 시작 번호

${status.end} for문의 끝 번호

${status.step} for문의 증가값

</td>

</c:forEach>

${status.current} 현재 for문의 해당하는 번호

${status.index} 0부터의 순서

${status.count} 1부터의 순서

${status.first} 첫 번째인지 여부

${status.last} 마지막인지 여부

${status.begin} for문의 시작 번호

${status.end} for문의 끝 번호

${status.step} for문의 증가값


사용 하시면 됩니다!

LIST
블로그 이미지

SeoHW

,
SMALL

AmCharts.makeChart("chartdiv", { // ... legend: { valueText: "", // ... }, // ... });

위와 같이 valueText : ""  해주시면 됩니다


LIST
블로그 이미지

SeoHW

,
SMALL

AngularJS 개념

AngularJS 는 SPA(Single Page Application) 프레임워크라고 합니다.


예를 들어, 하나의 웹 페이지가 실행할 때 View 단에 해당되는 부분이 페이지의 주소가 바뀌지 않으면서 또 다른 새로운 view 를  동적으로 로드하여  사용하는 것을 SPA 라고 합니다.


이러한 SPA 를 편하게 사용하도록 도움을 주는 것이 AngularJS 와 같은 자바스크립트 프레임워크입니다.

그래서 AngularJS 는 SPA 를 만들때 도움을 주는 프레임워크이고 자바스크립트 기반의 MV* 오픈소스 프레임워크라고도 합니다.


결론적으로 SPA & 자바스크립트 기반의 MV* 프레임워크입니다. 





MVC

그렇다면, MV* 패턴은 무엇인가?


자바스크립트 공부를 시작하면서 생소한 용어들 중에 디자인 패턴이란 용어가 있습니다.


디자인 패턴은 건축으로치면 공법에 해당하는 것으로 소프트웨어의 개발 방법을 공식화 한 것으로써, 소수의 뛰어난 엔지니어가 해결한 문제들에 대한 규칙들을 다수의 엔지니어들이 문제를 처리 할 수 있도록 한 규칙들이면서, 구현자들 간의 커뮤니케이션의 효율성을 높이는 기법을 디자인 패턴이라고 합니다.


MVC란 Model View Controller의 약자로 에플리케이션을 세가지의 역할로 구분한 개발 방법론입니다. 


아래의 그림처럼 사용자가 Controller를 조작하면 Controller는 Model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달하게 됩니다.



위의 그림을 웹에 적용해 보자면...


1. 사용자가 웹사이트에 접속한다. (Uses)

2. Controller는 사용자가 요청한 웹페이지를 서비스 하기 위해서 모델을 호출한다. (Manipulates)

3. 모델은 데이터베이스나 파일과 같은 데이터 소스를 제어한 후에 그 결과를 리턴한다.

4 .Controller는 Model이 리턴한 결과를 View에 반영한다. (Updates)

5. 데이터가 반영된 VIew는 사용자에게 보여진다. (Sees)

 


Controller


사용자가 접근 한 URL에 따라서 사용자의 요청사항을 파악한 후에 그 요청에 맞는 데이터를 Model에 의뢰하고, 데이터를 View에 반영해서 사용자에게 알려준다. 




Model


일반적으로 CI의 모델은 데이터베이스 테이블에 대응된다. 이를테면 Topic이라는 테이블은 topic_model이라는 Model을 만든다. 그런데 이 관계가 강제적이지 않기 때문에 규칙을 일관성 있게 정의하는 것이 필요하다.



View


View는 클라이언트 측 기술인 html/css/javascript들을 모아둔 컨테이너이다. 








MV* (통칭으로 MVstar 라고 말합니다)

- MVC

Model

View

Controller


- MVVM (Model-View-ViewModel)

- MVP (Model View Presenter)


MVC 패턴의 프레임워크를 통칭적으로 MV스타(MV*) 프레임워크라고 합니다.




AngularJS 참고사이트


Angular Seed 


 – 처음 시작을 위한 기본구조 제공


 – http://github.com/angualr/angular-seed 


 – http://ionicframework.com




AngularJS 구성요소


1. 지시자(Directive) 


– 뷰(View) 영역 

– 특정한 html 태그에 AngularJS 의 기능을 적용하고자 할 때 사용하는 것이 Directive 란 지시자를 사용하는데 AngularJS 의 Directive 는 ng 로 시작하는 지시자들이 많이 있습니다. 예) ng-*


2. 필터(Filters) 


– 어떤 데이터를 화면에 출력하는데 있어서 원하는 데이터만을 필터링하여 가져다 사용할 수 있도록 해주는 기능입니다.



3. 데이터 바인딩(Data Binding) 


– 표형태의 데이터들을 원하는 위치에 사용하기 편하게 바인딩하도록 해줍니다.



4. 컨트롤러(Controller) 


– 메인 컴포넌트 

– 기능별로 묶어서 사용하도록 해줍니다.



5. 서비스(Service) 


– 비즈니스 로직





AngularJS Expressions(표현식)


표현식 (Expressions)


– {{ }} 로 사용됨 (표현식 안에는 자바스크립트 문법을 사용할 수 있습니다)

– JavaScript 의 모든 문법을 지원하지 않음.

– 배열 등 선언 가능합니다.



사용 예


– {{ 표현식 }}

– {{ name }} 

– {{ 3 % 5 }} 의 결과값이 출력됩니다.

– {{ “안녕” + “하세요“ }} 문자열과 문자열을 접합한 결과가 나타납니다.





지시자(Directive)

새로운 형태의 HTML 태그/속성/속성값을 만들어서 정의해주는 것을 지시자라고 합니다.


다음의 ng-app="" 과 같은 태그와 속성/속성값을 정의할 수 있습니다.


ex) <body ng-app="">





위의 코드와 같이 html 이나 body 태그에 ng-app="" 을 지시자를 명시해 줌으로써 AngularJS 를 사용할 준비 단계를 설정합니다.

ng-app 은 data-ng-app 으로 사용할 수 있는데 ng 앞에는 모두 data 가 생략되어 있습니다.


다시말해서, ng-app 은 모듈을 정의해 주는 것입니다.



출처: http://webclub.tistory.com/206 [Web Club]

LIST
블로그 이미지

SeoHW

,
SMALL

자동완성 기능이란 사용자가 이전에 입력했던 파라미터를 브라우저가 기억해 두었다가 비슷한 파라미터를 입력할 때 다시 보여주는 사용자 편의를 돕는 기능입니다. 하지만 가능 input 태그를 사용할 때 이 자동완성 기능 때문에 디자인이나 레이아웃을 방해할 때가 있어 꺼두고 싶을때도 있습니다.

autocomplete=”off”

이 자동완성 기능을 해제하는 방법은 아주 간단합니다.

<input type="text" autocomplete="off" />

input 태그의 속성에 autocomplete 를 off 로 설정 해주는 것입니다.

다른 방법도 있습니다. input 태그가 포함되어 있는 form 태그에서 비활성화 시키면 됩니다.

출처:http://triki.net/wiki/126

<form autocomplete="off">
  <input type="text" />
</form>

두가지 경우 모두 동일한 효과를 냅니다.

더욱 자세한 내용은 w3school.com – HTML input autocomplete Attribute 페이지를 참고하세요.

끝.

LIST
블로그 이미지

SeoHW

,
SMALL

<%@ taglib prefix="fmt"  uri="http://java.sun.com/jsp/jstl/fmt"%><!-- 필수 -->


20170101 형식

<fmt:parseDate var="dateString" value="${sdt}" pattern="yyyyMMdd" />


2017.01.01 형식

<fmt:formatDate value="${dateString}" pattern="yyyy.MM.dd" />


20170101235959 형식으로 dateString에 담기. (년월일 시분초)

<fmt:parseDate var="dateString" value="${sdt}" pattern="yyyyMMddHHmmss" />

파싱후 문자열값: <fmt:formatDate value="${dateString}" pattern="yyyy.MM.dd HH:mm:ss" />



날짜 차이 계산

<c:set var="sdate" value="2017.01.15" />

<c:set var="edate" value="2017.01.22" />


<fmt:parseDate var="sDate" value="${sdate}" pattern="yyyy.MM.dd" />

값 확인 : <fmt:formatDate value="${sDate }"  pattern="yyyyMMdd" />

<fmt:parseNumber value="${sDate.time / (1000*60*60*24)}" integerOnly="true" var="sDays" scope="request" />


<fmt:parseDate var="eDate" value="${edate}" pattern="yyyy.MM.dd" />

값 확인 : <fmt:formatDate value="${eDate }"  pattern="yyyyMMdd" />

<fmt:parseNumber value="${eDate.time / (1000*60*60*24)}" integerOnly="true" var="eDays" scope="request" />

${eDays - sDays}일

LIST
블로그 이미지

SeoHW

,