중복되는 코드를 방지하고자 컴포넌트를 만들어본다.

 


1 vue Componet 생성

<body>
  <div id="root">
      <!--컴포넌트 별로 다른 데이터 props : Question-start-->
      <word-relay Question-start="리엑트"></word-relay>
      <word-relay Question-start="학교"></word-relay>
      <word-relay Question-start="고향"></word-relay>
  </div>
</body>


<script>
  Vue.component('word-relay',{
  template: ``
  ,data() {
  return {}
  }
  ,methods() {}
  });
</script>

<script>
  /*기본 Vue 인스턴스*/
  const app = new Vue({
  el : "#root",
  data : {
  },
  methods : {
  }
  });
</script>



2. 특징!


1) Component 선언은 기본 Vue 인스턴스의 선언보다 상단에 와야함
2) Component 는 데이터를 공유하지 않는다.
3) data는 함수형으로 사용해야함.
  : 컴포넌트는 여러번 사용하는 것을 전제로 하기 때문에
데이터가 각각의 컴포넌트별로 달라야함 (데이터의 분리)
그래서 새로운 객체를 리턴하는 방식으로 사용
4) Vue를 스크립트 태그를 걸어 사용할때 template 태그는 사용할 수 없다. (6번 내용과 연관)
: webpack 을 사용해야 하는 이유
5) 서버 시작시 모든 컴포넌트를 내려줌
6) template 는 반드시 하나의 태그(부모태그 1개)로 묶어 줘야함
<div>
   <div></div>
   <button />
   <div></div>
</div>
7) html 태그는 케밥케이스로 (props) 하단 스크립트에는 캐멀케이스로



[공통 지식]
1. 변수 생성 규칙
    word-word : 케밥케이스
    WordWord : 파스칼 케이스

01.컴포넌트의 필요성.html
0.00MB


    wordWord : 케멀케이스

2. ES6 의 문자열
1) '', "" (기존)
2) `` (신규 Backtick Template 문자열)

'Vue-cli' 카테고리의 다른 글

[Vue][기초] 01. Vue 특징  (0) 2019.10.07
1. 설치  (3) 2018.11.08

다운로드

[vue.js 무료 강좌]

 

[vue.js 특징]

1.  Vue.js는 일반적으로 개발자가데이터 중심 방식으로 생각하고 DOM을 직접 만지지 않도록 권장.

  • 예) data인 liked로
    <div v-if="liked">좋아요 클릭</div>
    <button  v-else v-on:click="clickLike()" >Like</button>
  • 화면은 알아서 Vue 가 처리 해줌. 데이터만 잘 관리하자!

2.   Vue는 DOM 업데이트를 비동기로.

  • Dom 바뀜에 따라 새로고침 되지 않음.

3. 양방향 바인딩 (2-way-binding)

  • v-model

 

 

[코드]

1. ref

  • 뷰에서는 $refs 속성을 이용해 DOM에 접근할 수 있다.  (남용 금지)
<input v-model="value" ref="answer">
this.$refs.answer.focus()

 

 

 

'Vue-cli' 카테고리의 다른 글

[Vue][기초] 02. Vue Component  (0) 2019.10.12
1. 설치  (3) 2018.11.08

 

 

'여행' 카테고리의 다른 글

[제주도] 3박 4일 여행 일정  (0) 2018.01.27
[푸켓] 3박 5일 전체 일정표  (0) 2017.11.01
[푸켓] 3박5일 4일차 상세 일정  (5) 2017.10.30
오사카 4일차  (0) 2017.01.22
오사카 1일차  (0) 2017.01.15

1. 컴파일러, 인터프리터란?


프로그래머가 작성한 소스코드는 기계가 이해할 수 있는 기계어로 변경해야합니다.

처음 작성된 프로그램은 원시 프로그램(Source program), 변환된 프로그램을 목적 프로그램(Target program)이라 부릅니다.

이러한 번역 또는 해석 과정을 수행하는 것은 운영체제일 수도 있고, 프로그램일수도있습니다.

이러한 번역 과정은 크게 3가지로 나뉩니다.




1-1. 컴파일러 - Compiler


빌드타임

프로그래머가 작성한 모든 소스코드에 대한 기계어를 생성합니다.


런타임

빌드타임때 생성한 모든 기계어를 한 번에 기계로 보냅니다.


특징

빌드타임에 모든 구문 분석과 기계어 변환이 이루어지기 때문에 빌드가 느리고 생성된 기계어는 정적입니다. 하지만 런타임의 경우 특별한 과정이 없어서 속도가 빠릅니다.

기계의 환경에 맞는 컴파일러를 선택해야합니다. C언어의 경우 Linux 환경에서 가장 많이 사용되는 컴파일러는 gcc 입니다. 즉, 운영체제에 종속적이므로 운영체제에 맞는 컴파일러가 필요합니다.


대표언어

C, C++




1-2. 인터프리터 - Interpreter


빌드타임

아무일도 하지 않습니다.


런타임

한 행씩 분석하여 알맞은 기계어를 생성한 뒤 기계로 보냅니다.


특징

실행속도가 느리지만 코드 변경시 즉시 실행이 가능하여 테스트에 용이합니다.


대표언어

Visual Basic, PHP




1-3. JIT(Just In Time)


빌드타임

런타임에서 실행할 수 있는 중간언어로 변환합니다.

Java의 경우 소스코드(.java)를 Javac.exe(Java 컴파일러)를 이용해서 JVM(Java 가상머신)이 이해할 수 있는 중간언어인 바이트코드(.class)로 변경합니다.


런타임

중간언어를 기계어로 변환하여 기계로 보냅니다. 기계어를 생성할 때 캐싱을 통해 같은 함수가 여러번 불려도 기계어를 계속 새롭게 생성하지 않고 기존에 만들어 놓은 기계어를 불러옵니다. 중간언어를 기계어로 변경하는 런타임시 시간이 오래걸립니다.

Java의 경우 Java.exe가 Java의 인터프리터로서 중간언어로 생성된 바이트코드(.class)를 기계어로 해석하고 실행합니다.


특징

어떤 운영체제에서도 같은 컴파일러로 중간언어를 만들기 때문에 운영체제에 독립적입니다. 어떤 상황에서도 같은 의도를 가진 소스코드를 작성할 수 있습니다. 운영체제에 맞는 중간언어를 기계어로 변경하는 프로그램(JVM, .NET Framework 등)이 필요합니다. 즉, 플랫폼의 제약이 없습니다.


대표언어

Java, C#



출처: http://cocomo.tistory.com/499 [Cocomo Coding]

'Java' 카테고리의 다른 글

[설치] OpenJdk 설치  (0) 2019.01.05
[이론] JDK, JRE, JVM ?  (0) 2019.01.05
전자 정부 프레임워크 context-idgen.xml  (0) 2018.08.01

1. OpenJdk  설치

  • 기본적으로 OpenJdk 는 gz파일로 배포가 되나, GitHub에 윈도우용 zip 또는 msi로 배포되는 페이지가 있다.
    링크 : https://github.com/ojdkbuild/ojdkbuild

1-1. Openjdk를 다운 받아 아래 경로에 압축 해제 한다.

1) 경로 C:\JAVA\java-1.8.0-openjdk-1.8.0.191


2. Java 환경 변수 등록

  • 환경 변수  ? 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는, 동적인 값들의 모임
  • 실행할 파일이 들어있는 폴더를 Path 환경변수에 미리 집어 넣어 설정해놓으면 해당 실행 파일이 위치한 폴더에 이동하지 않고도 실행이 가능하다.

① notepad 입력 

② notepad? 무슨 명령어지? 아! 어떤 파일명인가?

③ 그럼 Path 환경변수에 저장된 폴더들 안에 있나보다

④ Path 환경변수에 저장된 C:\Windows\System32 폴더 안의 notepad 라는 파일을 실행시키라는 의미구나

⑤ notepad 실행


출처: http://light-tree.tistory.com/6



2-1. 등록 방법


1) 내컴퓨터의 우클릭 > 속성 > 고급 시스템 설정



2) 시스템 변수 밑의 새로 만들기 클릭

위의 사용자 변수와 시스템 변수 차이 ? 

사용자변수 = 해당 사용자의 계정내에서만 적용되는 변수. 즉, 해당 사용자 계정으로 컴퓨터 로그온시에만 적용되는 변수. 

시스템변수 = 시스템변수는 시스템전반에 걸쳐 적용되는 변수. 즉, 다른 계정으로도 해당 변수를 사용할 수 있음.


3) JAVA_HOME 변수 등록

변수명 : JAVA_HOME 

변수값 : JDK 설치 경로



4) 시스템 변수 편집

 변수명 : Path

 변수값 : 기존값 + ;%JAVA_HOME%\bin

 

5) CLASSPATH 변수 등록

변수명 : CLASSPATH 

수값 :  %JAVA_HOME%\lib




6) 확인




2-2. 환경 변수 설명

 환경변수

 설명

 PATH

 OS에서 명령어를 실행할 때 명령어를 찾아야 하는 폴더의 순위를 설정하는 환경 변수 

 CLASSPATH

 JVM이 시잘될 때 JVM의 클래스 로더는 이 환경 변수를 호출 한다. 그래서 환경 변수에 설정되어 있는 디렉토리가 호출 되면 그 디렉토리에 있는 클래스들을 먼저 JVM에 로드한다. 그러므로 CLASSPATH 환경 변수에는 필수 클래스들이 위치한 디렉토리를 등록하도록 한다.

 JAVA_HOME

 JDK가 설치된 홈 디렉토리를 설정하기 위한 환경 변수다. 반드시 필요한 환경 변수는 아니지만 Path와 CALLPATH 환경 변수에 값을 설정할 때 JAVA_HOME 환경 변수를 포함하여 설정한다.



'Java' 카테고리의 다른 글

[이론] 컴파일러, 인터프리터, JIT  (0) 2019.01.08
[이론] JDK, JRE, JVM ?  (0) 2019.01.05
전자 정부 프레임워크 context-idgen.xml  (0) 2018.08.01

1. JDK, JRE? 

  • Java 애플리케이션을 행하기 위해서는 JVM이 필요하고 컴파일하기 위해서는 JDK가 필요하다. 

  • 일반적으로 JDK를 설치하면 JVM(Hotspot이라고도 표현, Java 기술의 핵심)도 함께 설치된다.

즉 JDK 설치 = JVM + JDK + JRE



1-1. JVM (Java Virtual Machine)

  • JVM은 추상 머신이다. 또한 자바 코드가 실행될 수 있는 런타임 환경을 제공해 주는 규격이다. 
  • JVM 은 아래와 같이 주요한 작업을 수행한다.

1) Loads Code : 작성된 소스코드를 로드(Load : 읽는다)
2) Verifies Code : 소스코드 검증 및 확인( 문법에 올바른지 검증하여 정상적으로 동작 하는지 확인한다)
3) Executes Code : 소스코드 실행 (실제 머신에서 소스코드를 실행해 프로그램을 구동한다.)
4) Provies runtime environment : 실행환경(Runtime Environment)의 규격을 제공한다. (필요한 라이브러리 및 기타파일)


1-2. JRE ( Java Runtime Environment)

  • JRE는 자바 실행환경(Java Runtime Environment)의 약자이다.

  • JRE는 JVM 이 자바 프로그램을 동작시킬 때 필요한 라이브러리 파일들과 기타 파일들을 가지고 있다. JRE는 JVM의 실행환경을 구현했다고 할 수 있다.


1-3. JDK (Java Development Kit)

  • JDK는 자바 개발도구(Java Development Kit)의 약자이다.

  • JDK는 JRE + 개발을 위해 필요한 도구(javac, java등)들을 포함한다.

2. Oracle JDK와 OpenJDK? 

  • JDK는 2개 버전으로 나뉜다. 하나는 폐쇄적인 상업 코드 기반의 Oracle JDK이고 하나는 오픈 소스 기반의 OpenJDK이다.

  • 둘 간의 큰 차이라면 Oracle JDK는 OpenJDK에는 없는 재산권이 걸린 플러그인을 제공한다. 해당 플러그인은 Oracle이 재산권을 보유하고 있다. (보다 정확히 설명하면 Oracle이 인수하여 없어진 Sun Microsystems 시절의 유산이다.)

  • Oracle JDK에 존재하고 OpenJDK에는 없는 대표적 기능으로 글꼴 라이브러리와 Java Web Start가 있다. 사용자의 웹 브라우저에서 자바 애플릿을 실행하려면 필요한 기능이다. 서버 애플리케이션 개발에는 쓰이지 않는 기능들이다.

  • 제공되는 기능적 차이 외에 Java 6 시대에는 분명히 OpenJDK가 Oracle JDK보다 성능이나 안정성이 크게 떨어졌다. 하지만 오늘날에는 Oracle JDK만이 제공하는 일부 라이브러리를 제외하고는 차이가 없다.

  • 문제는 Oracle JDK이다. 결론부터 이야기하면 Oracle JDK는 사용 목적에 따라 무료일수도 유료일수도 있다. 먼저 Oracle JDK(Java SE)의 구성 요소를 살펴보면 아래와 같다.


1. JDK
2. JRE(JVM)
3. JavaFX SDK
4. JavaFX Runtime
5. JRockit JDK

3. OpenJDK는 운영 환경에 부적합한가?

  • 결론부터 이야기하면 TCK 인증을 받은 OpenJDK 기반의 빌드 버전을 사용하면 운영 환경에 아무런 문제가 없다.
  • Java SE 7부터 모든 JDK는 OpenJDK 레퍼런스 소스 코드를 기반으로 제작된다. (Jave SE 6 버전의 OpenJDK는 백포트 방식으로 구현되어 성능 저하 이슈가 존재한다.) OpenJDK는 자바 스펙을 명시한 JSR 336, JSR 337를 빠짐없이 완전히 구현한 구현체이다.
  • OpenJDK의 운영 주체는 오라클이다. 오라클 또한 OpenJDK를 기반으로 자사의 부가적인 기능을 추가한 Oracle JDK를 제작하여 배포한다.

  • 오라클이 아닌 서드파티 업체가 OpenJDK를 기반으로 공인된 JDK를 제작하여 배포하려면 오라클의 유료 라이센스인 OCTLA에 가입해야 한다. 현재 전세계에 19개 업체가 가입되어 있다. [관련 링크] 이 업체들이 OpenJDK 기반의 자체 빌드를 배포하려면 오라클의 엄격한 TCK 인증을 통과해야 한다. 수만가지의 테스트를 단 하나라도 통과하지 못하면 인증되지 않는다.

  • OpenJDK를 멀티 플랫폼 바이너리로 빌드하여 배포하는 대표적인 업체로는 Azul Systems가 있다. 개발 환경과 운영 환경 모두 Oracle JDK의 대안으로 좋은 평가를 받고 있다. [관련 링크] 

4. OpenJDK 구현체

  • OpenJDK의 명세는 JCP(오라클, IBM, SAP 등으로 구성)에 의해서 결정된다. OpenJDK는 결정된 스펙(Java SE 7: JSR 336, Java SE 8: JSR 337)을 구현한 레퍼런스 소스 코드이다. 많은 상업 JVM 벤더들이 이 OpenJDK 레퍼런스 소스 코드를 기반으로 각자의 JVM을 제작한다. 엄격한 테스트의 TCK인증을 통과하면 OpenJDK를 완벽히 준수하는 구현체로 인정된다. Oracle JDK 또한 Java SE 7부터 이 OpenJDK를 기반으로 앞서 설명한 추가 요소를 담아 배포한다. [관련 링크] 


  • 트위터는 OpenJDK를 자사에 맞게 튜닝한 Twitter-JDK 위에서 자사의 서비스를 운영한다. [관련 링크] 

  • Azul Systems(미국 소재의 Java Runtime 제작 전문 회사)는 Zulu라는 OpenJDK 기반 빌드에 부가 기능을 추가한 WindowsLinuxMac OS X 바이너리를 무료로 제공한다. 이 회사는 서버 부하에 최적화된 Zing이라는 JVM을 판매한다. 엔터프라이즈 시장에서 Oracle JDK의 대안으로는 현재 독보적 위치에 있다. 테스트에서 Oracle JDK보다 성능이 좋았다는 사례도 있다. [관련 링크]  실제로 고성능을 요구하는 Cassandra 노드들은 Zing 기반으로 운영된다. [관련 링크] 



참고ㅣ http://jsonobject.tistory.com/395

'Java' 카테고리의 다른 글

[이론] 컴파일러, 인터프리터, JIT  (0) 2019.01.08
[설치] OpenJdk 설치  (0) 2019.01.05
전자 정부 프레임워크 context-idgen.xml  (0) 2018.08.01

1. Node.js 설치 

    1-1. 설치 이유

       -  NPM 을 사용하기 위함 

       -  vue-cli 는 npm 모듈로 제작되어 있기에 node.js 가 필수적으로 설치되어 있어야함

           : npm ? 

                  - Node.js로 만들어진 모듈을 웹에서 받아서 설치하고 관리해주는 프로그램, 명령어로 기존에 공개된 모듈들을 설치                      하고  활용할 수 있다.

                  - Java로 보면 메이븐과 비슷한 역할

       

      1-2. 설치 Url

        - https://nodejs.org/ko/ 






2. Install Dependencies

   2-1. npm install

- Svn에서 받은 Client Source(vue-cli) 를 터미널을 이용하여 Install

     : 명령어 : npm install

     > 오류 발생 npm ERR! code SELF_SIGNED_CERT_IN_CHAIN

       > 해결방법 :  터미널에서  명령어 실행 >>> npm config set strict-ssl false


     2-1-1. 오류 jpg


    

      2-1-2. npm config set strict-ssl false



    2-2. npm run dev

      serve with hot reload at localhost:80 

      - 서버가 시작된다.

      


'Vue-cli' 카테고리의 다른 글

[Vue][기초] 02. Vue Component  (0) 2019.10.12
[Vue][기초] 01. Vue 특징  (0) 2019.10.07

context-idgen.xml 역할  : 시퀀스 증가



-- 전자 정부 프레임워크 id Generation 서비스 Table 예
- spring/context-idgen.xml 설정

    <bean class="egovframework.rte.fdl.idgnr.impl.EgovTableIdGnrService" destroy-method="destroy" name="egovRoleIdGnrService">
        <property name="dataSource" ref="dataSource">
        <property name="strategy" ref="roleIdStrategy">
        <property name="blockSize" value="1">
        <property name="table" value="SEQ">
        <property name="tableName" value="ID">
    </property></property></property></property></property></bean>

    <bean class="egovframework.rte.fdl.idgnr.impl.strategy.EgovIdGnrStrategyImpl" name="roleIdStrategy">
        <property name="prefix" value="test-">
        <property name="cipers" value="6">
        <property name="fillChar" value="0">
    </property></property></property></bean>

blockSize - 카운터가 몇 이후에 DB조회를 할것인지 설정 [ 현재 1은 카운터가 1씩 늘어날때마다 DB조회함..]
table - dataSoure 에 설정된 db의 테이블 이름 [현재 SEQ 테이블]
tableName - dataSoure 에 설정된 DB에 SEQ 테이블에 tableName 컬럼에 참조할 값

strategy: 아래에 정의된 MixPrefix 의 bean name 설정
prefix: 아이디의 앞에 고정적으로 붙이고자 하는 설정값 지정
cipers: prefix를 제외한 아이디의 길이 지정
fillChar: 0을 대신하여 표현되는 문자




-- 소스 참고 ---

/**
  * Message ID Generation
  * @uml.property  name="egovRoleIdGnrService"
  * @uml.associationEnd  readOnly="true"
  */
    @Resource(name="egovRoleIdGnrService")   
    private EgovIdGnrService egovRoleIdGnrService;

public viod test() {
egovRoleIdGnrService.getNextStringId();
}



-- 호출시 실행되는 쿼리 ----

오라클 기준
SELECT <sequence name="name">.NEXTVAL FROM DUAL


--- DB스키마 -----
CREATE SEQUENCE <sequence name="name"> [START WITH <start value="value">] [INCREMENT BY <increment value="value">] [MINVALUE <min value="value">] [MAXVALUE <max value="value">]



출처 : http://yth2626.blogspot.com/2012/11/id-generation-table.html

'Java' 카테고리의 다른 글

[이론] 컴파일러, 인터프리터, JIT  (0) 2019.01.08
[설치] OpenJdk 설치  (0) 2019.01.05
[이론] JDK, JRE, JVM ?  (0) 2019.01.05

https://programmers.co.kr/learn/challenge_codes/106

'알고리즘공부' 카테고리의 다른 글

10진수를 n진수로 변환하기  (0) 2017.06.22



'여행' 카테고리의 다른 글

[세부][숙소] 01. 숙소 별 가격 비교  (0) 2019.10.06
[푸켓] 3박 5일 전체 일정표  (0) 2017.11.01
[푸켓] 3박5일 4일차 상세 일정  (5) 2017.10.30
오사카 4일차  (0) 2017.01.22
오사카 1일차  (0) 2017.01.15

+ Recent posts