Apache 가 웹서버,

Tomcat 이 WAS 일 때


Apache 가 Tomcat 의 앞단에서 프록시 역할을 하려면


site-available/000-default.conf 파일의 <VirtualHost *:80> 내부에

ProxyPass / http://localhost:8080/

ProxyPassReverse / http://localhost:8080/

ProxyVia on


위와 같은 코드를 추가하면 된다.


추가한 후 적용을 위해

 $ sudo service apache2 restart

로 서버 재시작을 해준다.


단, 이렇게 해서 다음 에러가 날 수 있다.


AH00526: Syntax error on line 13 of /etc/apache2/sites-enabled/000-default.conf:

Invalid command 'ProxyPass', perhaps misspelled or defined by a module not included in the server configuration

Action 'configtest' failed.


이는 프록시 모듈이 Enabled 되지 않아서 그러는 것이니 다음을 실행해준다.

 $ sudo a2enmod proxy_http



그러면 아래와 같이 나오면서 처리된다.

Considering dependency proxy for proxy_http:

Enabling module proxy.

Enabling module proxy_http.

To activate the new configuration, you need to run:

  service apache2 restart


(서버를 재시작해야 적용된다는 말이 포함되어 있다.)




$ grep . /etc/*-release



결과 예시)


/etc/lsb-release:DISTRIB_ID=Ubuntu

/etc/lsb-release:DISTRIB_RELEASE=14.04

/etc/lsb-release:DISTRIB_CODENAME=trusty

/etc/lsb-release:DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"

/etc/os-release:NAME="Ubuntu"

/etc/os-release:VERSION="14.04.3 LTS, Trusty Tahr"

/etc/os-release:ID=ubuntu

/etc/os-release:ID_LIKE=debian

/etc/os-release:PRETTY_NAME="Ubuntu 14.04.3 LTS"

/etc/os-release:VERSION_ID="14.04"

/etc/os-release:HOME_URL="http://www.ubuntu.com/"

/etc/os-release:SUPPORT_URL="http://help.ubuntu.com/"

/etc/os-release:BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"


'Programming' 카테고리의 다른 글

About "Expert Beginner"  (0) 2018.10.04
좋은 프로그램의 척도  (0) 2018.01.31
javascript / normalizeForIE  (0) 2017.12.27
기술자 등급분류 기준  (0) 2016.02.11
C# 과 C++에 관한 고찰...  (0) 2014.02.14



다른 사람들은 별도의 설정 없어도 정상적으로 메이븐 빌드가 되는데

나의 경우에는 자꾸 package does not exist 에러가 났다.

(여기서 package는 커스텀 패키지로 .jar의 형태)


프로젝트 속성 -> Java Build Path 에 보면,

해당 라이브러리가 Web App Libraries 하위에 포함되어 있음에도 그랬다.


심지어 바로 어제는 Build Path 에 추가해주는 것만으로도 처리 됐는데,

오늘이 되자 이 방법으로는 어떻게 해도 진행 불가.


그래서 [Add JARs...] 를 눌러서 명시적으로 해당 파일을 추가해줘도 마찬가지.


내 개발환경은

* mac air

  - os : el capitan(10.11.6)

* eclipse mars

* spring framework 3.8.1

* maven 은 별도로 설치 하지 않음

  - spring IDE Maven Integration 으로 포함

  - 프로젝트 실행에 이상 없으나 명령줄에서 mvn -version 사용불가

  - 추가 설치(maven : 3.3.9, 연결된 java : 1.8)했으나, 실제 프로젝트 컴파일 시 영향이 있는지는 모르겠음.

* Java Build Path

  - JRE System Library : Java SE 7 (1.7.0_79)

* Java Compiler

  - Compiler comliance level : 1.5

* 구동 환경 : Tomcat 7






구글링 해서 결국 꾸역 꾸역 돌아가는 방법을 찾았다.


pom.xml 파일에


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

<properties>

<!-- 라이브러리 위치 -->

<webapp.lib>${basedir}/src/main/webapp/WEB-INF/lib</webapp.lib>

</properties>


<!-- for Libraries (lib/Libraries.jar) -->

<dependency>

<groupId>whatever</groupId>

<artifactId>whatever</artifactId>

<version> whatever </version>

<scope>system</scope>

<systemPath>${webapp.lib}/Libraries.jar</systemPath>

</dependency>

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


강제로 추가하는 방법으로 clean 및 install 완료하고 war 로 추출하기 성공했다.




...그런데 왜 남들은 이 설정 안해줘도 되는데 나는 안되는건지 모르겠다 -_ㅠ




ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


위와 같은 방법으로 진행시, 메이븐 빌드는 가능하다.

하지만 실제로 만들어진 WAR 파일로 배포는 할 수 없다.

서버에 올릴 때 에러가 발생.

어딘가 플러그인이 꼬인 것 같다.


이클립스 마켓플레이스 말고,

Install New Software 에 [ http://m2eclipse.sonatype.org/sites/m2e ] 를 입력해서 나오는

Maven Integration for Eclipse 체크해서 다운로드 중.


이후 과정은 해보고 다시 포스팅....


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


플러그인이 꼬인게 아니라, 역시 설정의 문제였음.


전제 1. 모든 파일은 SVN 에 연결하여 Checkout 하므로 다른 사람들과 동일한 파일을 가지고 있다.

   (pom.xml 등의 파일을 건드려서 처리하면 안 된다.)

전제 2. 프로젝트에서  톰캣 서버를 통해 Run 시킬 때는 이상이 없다. 고로 프로젝트 상 문제는 아니다.

   (=배포(Maven Build)의 문제다.)


위와 같은 추론을 해서 그동안 계속

해당 프로젝트의 Context 메뉴에서 Properties 쪽 문제일 것 같아 살펴봤는데


* Deployment Assembly

: 경로들에 문제는 없으나, [pom.xml (우클릭) ㅡ Maven ㅡ Update Project..] 진행한 경우 목록에 [Maven Dependencies] 가 보이지 않을 수 있음.

=> [Add ㅡ Java Build Path Entries (Next) ㅡ Maven Dependencies (Finish)] 하여 처리


* Java Build Path

- Tomcat 7.0 바운딩 완료

  : Unbound 이면 더블 클릭 또는 [Edit...] 를 눌러 연결

- JRE System Library [Java SE 7 (1.7.9_79)] 바운딩 완료

  : Unbound 혹은 다른 버전이면 더블클릭 또는 [Edit...] 를 누르고 Alternate JRE 에서 명시적으로 지정, [Installed JREs...] 버튼을 눌러 선택한 것과 동일한 JRE 선택 후 [Apply] 및 [OK] 


* Java Complier

: 실제 배포될 자바 버전을 선택. (필자는 1.5)


* Server

: 서버 목록이 비어있다면, Servers 윈도우에서 [우클릭 ㅡ New ㅡ Server] 로 추가 가능


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


But...


위 목록들 전부 이상이 없었다.

더이상 커스텀 할 무언가도 없는데 뭐가 문제인가.....


구글링을 한 결과....


(대부분 pom.xml을 바꾸는 문서라 찾기가 엄청 어려웠지만)


JRE System Library 에 외부 라이브러리를 추가 해줄 수 있다.


[ Java Build Path ㅡ JRE System Library (Edit...) ㅡ Installed JREs... ㅡ (자바 버전 선택 후) ㅡ Edit... ]

로 들어가서 해당 언어에 속하는 라이브러리를 선택할 수 있는 것.


[ Add External JARs... ] 버튼을 눌러 WEB-INF/lib 안에 있는 커스텀(혹은 3rd party) 라이브러리를 추가한 후 [ Finish ㅡ Apply ㅡ OK ㅡ Finish ㅡ Apply ] 를 순서대로 눌러 프로젝트 속성 창을 닫고


프로젝트 클린 및 빌드, 메이븐 클린 및 패키지(혹은 인스톨) 하면, 타겟 폴더에 드디어 WAR 가 추출된다!!!!!!!!!!



성공!!!!!!!!!!!!!



기술등급

기술자격자

학력·경력자

 기술사

기술사
 

 특급

기술자

- 기사 자격을 취득한 자로서 10년이상 해당 분야의 업무를 수행한 자

- 산업기수자격을 취득한 자로서 13년 이상

- 박사학위를 가진 자로서, 3년이상 경력자

- 석사학위를 가진 자로서, 9년이상

- 학사학위를 가진 자로서, 12년이상

- 전문대학을 졸업한 자로서, 15년이상

- 고등학교를 졸업한 후 18년 이상

 고급

기술자

- 기사 자격을 취득한 자로서 7년 이상

- 산업기사자격을 취득한 자로서 10년 이상

- 박사학위를 가진 자

- 석사학위를 가진 자로서, 6년이상

- 학사학위를 가진 자로서, 9년이상

- 전문대학을 졸업한 자로서, 12년이상

- 고등학교를 졸업한 후 15년 이상

 중급

기술자


- 기사의 자격을 취득한 자로서 4년 이상
- 산업기사의 자격을 취득한 자로서 7년 이상

- 석사학위를 가진 자로서, 3년이상

- 학사학위를 가진 자로서, 6년이상

- 전문대학을 졸업한 자로서, 9년이상

- 고등학교를 졸업한 후 12년 이상

 초급

기술자

- 기사 자격을 취득한 자

- 산업기사의 자격을 취득한 자로서 2년 이상

- 학사 이상의 학위를 가진 자

- 전문대학을 졸업한 자로서, 3년이상

- 고등학교를 졸업한 후 3년 이상

 고급

기능사

- 산업기사의 자격을 취득한 자로서 4년 이상 소프트웨어 기능 분야에서 일정기간 경력을 갖추거나 근무한 사람

- 기능사의 자격을 취득한 자로서 7년 이상 소프트웨어 기능 분야에서 일정기간 경력을 갖추거나 근무한 사람

 

 중급

기능사

- 산업기사의 자격을 취득한 자
- 기능사의 자격을 취득한 자로서 3년 이상 소프트웨어 기능 분야에서 일정기간 경력을 갖추거나 근무한 사람

 

 초급

기능사

 기능사의 자격을 취득한 자

 


> 상급자의 기본 베이스는 하급자 + 경력 3년

'Programming' 카테고리의 다른 글

About "Expert Beginner"  (0) 2018.10.04
좋은 프로그램의 척도  (0) 2018.01.31
javascript / normalizeForIE  (0) 2017.12.27
Linux 버전 확인 명령어  (0) 2016.10.14
C# 과 C++에 관한 고찰...  (0) 2014.02.14


프로그램을 영문으로 입력했을때 대안 프로그램을 찾아주는 사이트


http://alternativeto.net


단, 외국 사이트라서 국내 프로그램은 거의 없음


참조 : http://sharingtime.kr/773


프로그램을 만들다보면 예외처리를 해야되는데,

테스트 하다보면 출력창에는 "예외가 발생했습니다"라고 뜨면서

실제로 그 예외가 발생한 곳이 어딘지 알 수 없는 경우가 있다.


별도로 설정해주지 않으면 예외 상황에서 중단점이 걸리지 않기 때문인데

(실제로 배포할때는 비정상 종료되는 부분이다;;)

이걸 설정하기 위해서는


Visual Studio 에서 Ctrl + Alt + E 를 눌러서 확인할 항목들을 체크하고 확인을 누르면

해당 예외가 발생할때 중단점이 걸려서, 예외가 발생하는 부분이나 호출 스택을 확인할 수 있다.


전에는 설정 해두고 써서

노트북에서도 당연히 되야 하는데...

라고 생각하면서 왜 안되는지 몰라서 헤멤...

다시 찾느라고 한참...


그래서 또 까먹을까봐 포스팅~


MySQL이 오라클로 넘어가면서 유료화 되었다.

그래서 무료로 사용하기 위해서는 MariaDB를 사용하여야 하는데,

MySQL과 MariaDB는 구조적으로 동일하기 때문에 연동하는 방법도 같다.


http://dev.mysql.com/downloads/connector/net/

위 경로에서 닷넷 커넥터 설치파일을 받아서 설치한 후,


mysql-connector-net-6.9.7.zip

mysql-connector-net-6.9.7.z01


(오라클 로그인 절차가 번거로우시면 위 파일을 다운받아 주세요.
용량이 10MB를 초과하여 분할압축 하였으며,

2015.08.24 기준 Generally Available (GA) Releases 버전입니다.)


C:\Program Files (x86)\MySQL\MySQL Connector Net 6.4.6\Assemblies


위 경로에 있는 dll을 참조에 추가해주면 된다.

(.NET framework 버전에 따라서 2.0 과 4.0 중 골라서 추가)



만약, dll 추가후

참조된 어셈블리 "~"이(가) 현재 대상 프레임워크 ".NETFramework,Version=v4.0,

Profile=Client"에 없는 "System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=~"에 종속되어 있기 때문에 확인할 수 없습니다. 대상 프레임워크에 없는 어셈블리에 대한 참조를 제거하거나 프로젝트의 대상을 다시 지정하십시오.

라는 경고가 뜬다면,

프로젝트 속성에서 "대상 프레임워크"를 Client 버전에서 full 버전으로 변경해주면 된다.

(full 버전 framework는 무거워서... 일단 경고이므로... 저는 client 버전으로 개발 속행...

후에 문제생기면 재 포스팅 하겠습니다)

출처 : http://hippochart.tistory.com/411


만약(2), dll 추가후

warning MSB3276: 같은 종속 어셈블리의 서로 다른 버전이 충돌합니다. 프로젝트 파일에서 "AutoGenerateBindingRedirects" 속성을 true로 설정하십시오.

라는 경고가 뜬다면,

응용 프로그램의 구성 파일(App.config 또는 Web.config)에 바인딩 리디렉션을 추가하면 된다.

(아래 더보기를 참조하여, 동일한 색은 동일한 문구로 대체해야 한다)




참고) 연동 code


    using MySql.Data.MySqlClient;

    string MyConString = "SERVER=localhost; DATABASE=dbname; UID=userid; PASSWORD=passwd;";
    MySqlConnection connection = new MySqlConnection(MyConString);
    MySqlCommand command = connection.CreateCommand();
    MySqlDataReader Reader;
    command.CommandText = "select * from tablename";
    connection.Open();
    Reader = command.ExecuteReader();

    StringBuilder sb = new StringBuilder();

    while (Reader.Read())
    {
      string thisrow = "";
      for (int i = 0; i < Reader.FieldCount; i++)
              thisrow += Reader.GetValue(i).ToString() + ",";
      sb.AppendLine(thisrow);
    }
    connection.Close();

    return sb.ToString();

> 연동 code 출처는 기억이 안나네요 ^^; 포스팅할 생각을 못했을 때라...






1. Foreign Key(외래키)는 DB 에서 참조 무결성을 보장하기 위해 사용된다.

   - 참조 무결성이란? 자식 table 안에 1개의 필드(Columm)가 부모 table 의 필드를 참조하는 관계에서 부모 쪽 데이터의 삭제 또는 업데이트로 인해 참조가 불가능 한 경우를 만들지 않기 위함.

 

2. Foreign Key 를 가지는 부모테이블과 자식 테이블은 Engine 이 InnoDB 여야만 한다.

 

3. Foreign Key 로 설정할 두 테이블의 필드는 같은 데이터 형을 가지고 있어야 한다.

 

4. Foreign Key 로 설정하여 참조할수 있는 값은 꼭 Primary Key 가 아니여도, Unique(인덱스) 이면 가능하다.

 

5. Foreign Key 로  설정이 불가능한 데이터 형은 BLOB,TEXT 형이다.

 

6. Foreign Key 를 설정 할때 Constraint 는 DB 내에서 유일해야한다. (지정하지 않으면 자동으로 지정됨)

 

7. Foreign Key는 테이블 생성시 설정 또는 생성 후에 ALTER 명령어로 설정할 수 있다.

 

   sql 문 : ALTER TABLE 자식 테이블명

              ADD FOREIGN KEY (자식 테이블의 컬럼명) REFERENCES 부모 테이블명(부모 테이블의 컬럼명)

              ON UPDATE 옵션 ON DELETE 옵션;

 

8. Foreign key 옵션 

    * 여기서 햇갈리지 말아야 할 것,!

      만약 A 테이블이 부모 테이블이고 B 테이블이 자식 테이블이라 가정하고, FK에 해당하는 필드가 A_NO와 B_NO 라 할 때, A_NO와 B_NO의 값이 같은 데이터들에 대하여 아래에서 말하는것을 잊지말자.

     

   1) On Delete

 Cascade : 부모 데이터 삭제시 자식 데이터도 동시 삭제.

 Set null : 부모 데이터 삭제시 해당되는 자식 데이터의 Columm은  Null 로 처리.

 Set default : 부모 데이터 삭제시 자식 데이터의 Columm은 기본 값(Default) 으로 Update.

 Restrict : 자식 테이블에 데이터가 남아 있는 경우 부모 테이블의 데이터는 삭제 불가.

 No Action :  

 

  2) On Update

Cascade : 부모 데이터 수정시 자식 데이터도 동시 수정.

Set null : 부모 데이터 수정시 해당되는 자식 데이터의 Columm은 Null 로 처리.

Set default : 부모 데이터 수정시 자식 데이터의 Columm은 기본 값(Default) 으로 Update.

Restrict : 자식 테이블에 데이터가 남아 있는 경우 부모 테이블의 데이터는 수정 불가.

No Action :

 

* NO ACTION

참조되는 측 관계변수에 대해 UPDATE, DELETE 가 실행됩니다. DBMS에서 SQL문장의 실행 종료시에 참조 정합성을 만족하는지 검사합니다. RESTRICT와 차이점은 트리거 또는 SQL문장의 시멘틱스 자체가 외래키의 제약을 채울것이라는 데에 있습니다. 이때는 SQL 문장 실행이 성공합니다. 외래 키의 제약이 만족되지 않은 경우에는 SQL문장이 실패한다.

 

 

   * On Delete 나 On Update 가 지정되어 있지 않으면 NO ACTION 이 기본 값으로 설정된다.

   * MySQL 에서는 Set Default 를 지원하지 않는다.

 

 

9. 그 밖의 참고 명령문

    1) test 테이블의 외래 키 제약을 나열시키는 명령문 : SHOW TABLE STATUS FROM 데이터베이스명 LIKE 'test';





출처 : http://congi.tistory.com/entry/Foreign-Key-%EC%84%A4%EC%A0%95-%EB%B0%A9%EB%B2%95-%EB%B0%8F-%EC%98%B5%EC%85%98-%EC%84%A4%EB%AA%85




'DBMS > MySQL' 카테고리의 다른 글

C 언어에서 MySQL 연결할 때 링크 에러가 발생하면  (0) 2017.01.24
ubuntu 에서 mysql 설치 시 문제  (0) 2017.01.24
ifnull, coalesce  (0) 2014.08.21



일단


ifnull 과 coalesce 는 둘다 지정한 값이 널이면 다른 값으로 변환해주는 함수.

mssql로 치면 isnull(val,'') 로 보면 되겠다.


차이점은 사용법에 있다.


ifnull(val, '')

 : 항목은 두 개 뿐으로, 하나가 null이면 다른 값을 출력한다. 순서는 상관없다.

coalesce(val1, val2, val3, val4...)

 : 항목은 여러 개 가능하고, 처음으로 만나는 null이 아닌 값을 출력한다.




단, 이 함수들은 에러를 리턴할 수 있다.


ex.

select isnull(null, null);
-> results in an error

select isnull(null, cast(null as varchar));
-> returns null

select coalesce(null, null, null, null, null);
-> results in an error

select coalesce(null, null, null, null, 'first non-null value');
-> returns 'first non-null value'



덧. 위 에러 예제들에 보면 다음과 같은 문구가 있는데

MSSQL does more strict type and parameter checking. Further, it doesn't have IFNULL function but instead ISNULL function, which needs to know the types of the arguments.

ifnull이 문제라는건지 isnull이 문제라는 건지 모르겠다. 두번째 문장이 해석이 안됨;






윈폼 기본 컨트롤을 사용하다가 기본 컨트롤을 상속받아 재정의 해서 써야 할 일이 종종 있었다.

그냥 보통 구현의 경우 상관없지만, 생성자를 재정의(오버라이딩), 혹은 중첩정의(오버로딩) 할 경우

디자이너까지 손대야 하는데...


내 경우에는 매개변수가 있는 생성자를 써야 했기 때문에 디자이너를 건드렸고,

저장 직후 디자인이 이상 없이 보였으나, 다시 닫고 .designer.cs를 열었더니 알아서 뭔가 정리(?)가 되었고,

이 후에는 디자인이 제대로 열리지 않았다.


그래서 디자인을 열려고 하면


"디자이너 변수를 선언하거나 할당하지 않았습니다"


경고던가? 이 글귀와 함께 디자이너 에러....

스택 추적도 애매하고...


열심히 고민해 본 결과 원인은 .designer.cs의 자동 정리(?)에 있었다.


생성자가 필요할 때는 new로 실제로 할당할 때인데,

이걸 

InitializeComponent();

안에서 해줘야 하는데 에러인지 버그인지,

나는 분명 내부에서 할당해 준 것 같은데

외부에 선언될 때 new가 되어 있었다.


그래서 함수 내부에서 new 해주니 그때부터 이상없이 잘 작동.

'Programming > C#(with .NET)' 카테고리의 다른 글

ASP 0178 : 80070005 에러  (0) 2017.12.12
C#(WinForm)과 MariaDB(MySQL)의 연동  (0) 2015.04.03

+ Recent posts