Step 1. 기존 DBeaver 환경설정 파일 백업

DBeaver 기본 환경설정 파일은 AppData 쪽에 있다! 일단 윈도우 탐색기를 열어보자.
내 컴퓨터를 열어도되고, Win + E 키를 눌러 열어도 된다.
창이 열리면 주소창에 %AppData% 를 입력하고 엔터!
 
%AppData%

 

그럼 DBeaver가 설치된 PC라면 아래와 같이 DBeaverData 디렉토리를 확인할 수 있다. 통째로 복사하자.

 

 Step 2. 새로운 환경 PC에 환경설정 파일 복구

옮겨진 환경에서 %AppData% 경로로 다시 들어가서 Step 1 에서 복사한 디렉토리를 그대로 붙여넣자.
 
%AppData%

 

 

 

 

아래와 같이 붙여넣기를 했다면 DBeaver를 설치하면 거의 다 끝!

 
 
 

 Step 3. DBeaver 설정 및 확인

DBeaver 설치까지 완료했다면
파일 > 작업공간 전환 > 기타 클릭!

 
찾아보기 클릭 > DBeaverData 경로 지정

 
※ 아래 캡쳐에서 General, General2는 DBeaver에서 실제 표시되는 디렉토리로 해당 디렉토리의 바로 한단계 상위 디렉토리까지 지정해주면 됨. 즉, 아래 캡쳐 예시에서는 workspace6까지 지정을 해주면된다. 

 

Launch 클릭!

 

그럼 아래와 같이 복구 된 것을 확인할 수 있다.

 

 

 

출처 :  https://closed0402.tistory.com/131

 

SUBSTRING : SUBSTR 가능

12345678의 5번째부터 끝까지 문자열을 추출합니다.

SELECT SUBSTRING( '12345678', 5 );
+----------------------------+
| SUBSTRING( '12345678', 5 ) |
+----------------------------+
| 5678 |
+----------------------------+
SELECT SUBSTRING( '12345678' FROM 5 );
+--------------------------------+
| SUBSTRING( '12345678' FROM 5 ) |
+--------------------------------+
| 5678 |
+--------------------------------+

12345678의 5번째부터 2개의 문자열을 추출합니다.

SELECT SUBSTRING( '12345678', 5, 2 );
+-------------------------------+
| SUBSTRING( '12345678', 5, 2 ) |
+-------------------------------+
| 56 |
+-------------------------------+
SELECT SUBSTRING( '12345678' FROM 5 FOR 2 );
+--------------------------------------+
| SUBSTRING( '12345678' FROM 5 FOR 2 ) |
+--------------------------------------+
| 56 |
+--------------------------------------+

추출할 문자열의 개수가 모자르면 가능한만큼만 추출합니다.

SELECT SUBSTRING( '12345678', 5, 10 );
+--------------------------------+
| SUBSTRING( '12345678', 5, 10 ) |
+--------------------------------+
| 5678 |
+--------------------------------+

SUBSTRING_INDEX

SUBSTRING_INDEX( string, delimiter, count )

12.34.56.78을 .으로 구분하면 4개의 문자열이 나오는데, 그 중 앞에서 3개를 추출합니다.

MariaDB [(none)]> SELECT SUBSTRING_INDEX( '12.34.56.78', '.', 3 );
+------------------------------------------+
| SUBSTRING_INDEX( '12.34.56.78', '.', 3 ) |
+------------------------------------------+
| 12.34.56 |
+------------------------------------------+

음수인 경우 뒤쪽에서 추출합니다.

MariaDB [(none)]> SELECT SUBSTRING_INDEX( '12.34.56.78', '.', -2 );
+-------------------------------------------+
| SUBSTRING_INDEX( '12.34.56.78', '.', -2 ) |
+-------------------------------------------+
| 56.78 |
+-------------------------------------------+

 

출철 : https://www.codingfactory.net/12501

DB에 접속해서 작업을 할 때, DBeaver라는 무료 프로그램을 많이 사용하게 됩니다. 이 프로그램을 사용해서 Oracle, MSSQL, PPAS에 연결하여 사용하는 법을 알아볼게요!!

 

 DBeaver 설치하는 방법

DB 관리 툴로 예전에는 Toad, Orange를 많이 사용했는데 라이선스가 필요하기 때문에 저처럼 프로젝트를 많이 옮겨 다니는 경우에는 바로 무료 툴을 받아 설치해서 사용하는 게 편하더라고요. 일단 설치부터 고고.

 

구글에 DBeaver를 검색하면 다운로드 페이지가 맨 위에 뜹니다.

Download 클릭해 들어가서 본인에게 필요한 OS 버전을 다운로드하여 설치하시면 끝입니다.

 

구글에서 DBeaver 검색하여 다운로드 받기

 

 DBeaver로 DB 접속하기

예전에는 별도의 드라이버 설치 필요 없이, DB정보만 입력하고 방화벽만 뚫려 있으면 바로 접속이 되었던 것 같은데, 최근에 여러 프로젝트에서 새로 깔아 해보려니 드라이버를 따로 설정해줘야 하더라고요.

 

물론 드라이버 다운로드하겠느냐는 페이지가 뜨는데 접속이 되지 않거나 계속 오류가 표시되는 문제가 있었습니다.

 

결론은 디비의 종류마다 맞는 odbc 라이브러리를 구해줘서 라이브러리 패스에 추가해줘야 정상적으로 연결이 됩니다.

 

 

 오라클 접속하기

처음에 커넥션을 만드는 템플릿에서 오라클을 선택합니다. IP, Port, DB SID, Username, Password 정보를 입력하고 왼쪽 하단의 Test Connection을 클릭했을 때 정상적으로 연결이 되면 성공인데요, 잘 되지 않으면 드라이버를 다시 세팅해줘야 합니다.

 

우측 하단의 Edit Driver Settings를 클릭하고 들어갑니다. Library탭으로 이동하여 기존에 있던 세팅 값을 다 지우고 "Add File"버튼을 눌러 odbc 라이브러리 파일을 추가합니다. 저의 경우 ojdbc8.jar를 넣으니 정상적으로 동작했습니다.

 

DBeaver 드라이버 세팅 변경하기

 

 

 

 

 MSSQL 연결하기

이번 프로젝트에는 디비 종류도 참 다양합니다. 보통 오라클 MSSQL 정도인데, 이번엔 Postgre계열인 PAAS 디비까지 있습니다. 써본 적도 없는 디비인데, 여하튼 일단 MSSQL 먼저 도전합니다.

 

일단 연결 템플릿에서  SQLServer를 선택합니다. 연결 정보 세팅 후 Test Connection을 눌렀지만 역시나 바로 되지 않네요. Edit Driver Settings를 클릭하여 들어갑니다.

 

아까와 동일하게 라이브러리 탭으로 이동하여 기존 정보를 지우고 sql 라이브러리를 설정해줍니다. 저는 라이브러리가 없어서 구글에서 검색해서 다운로드하였습니다. 압축파일로 되어 있는데, 압축을 풀고 보시면 자바 버전별로 라이브러리가 제공되어 있습니다. 저는 8 버전의 라이브러리를 설정했더니 연결이 문제없이 되었습니다.

 

MSSQL jdbc드라이버 다운로드

 

 PPAS 연결하기

 

PostgreSQL과 PPA의 다른 점은?!

PostgreSQL은 EnterpriseDB 사에서 제공하는 무료 데이터베이스입니다. 오픈소스이며 확장성 및 표준 준수를 강조하는 객체-관계형 데이터베이스로 최근 많이 사용되는 추세이죠.

 

피파스라고 부르는 PPAS는 Postgres Plus Advanced Server의 약자로 PostgreSQL 기반이면서 오라클의 사용법을 그대로 사용할 수 있는 장점이 있는 디비입니다. 또한 오라클 기반으로 사용하는 애플리케이션을 실행할 수 있다는 것이 큰 강점이죠.

 

따라서 오라클이 비싸기 때문에 PPAS로 마이그레이션 하여 더 저렴하게 시스템을 연동할 수 있는 매우 큰 장점을 가지고 있어서 요즘 사용들을 많이 합니다.

 

그래서 그런지 지금 프로젝트에도 PPAS가 등장했네요. 처음 연결해봅니다. 두근두근..

 

 

DBeaver에서 PPAS 연결해보기

 

포스트그레 기반이니까, 템플릿을 포스트그레로 선택했습니다. 연결 정보 입력하고.. 연결 테스트. 역시 안됩니다. 얘는 PostgreSQL의 라이브러리를 넣어 놓아도 실행이 안됩니다. PPAS용 jdbc 라이브러리를 찾아야겠죠. 구글링을 해보니 라이브러리 파일 명이 edb-jdbc18.jar라고 합니다.

 

라이브러리를 못 찾아서 프로젝트 공유서버에 edb라고 쳐서 검색했더니 나왔습니다. PPAS를 깔고 나면 그 드라이브 뒤져보면 있다고 하니 그렇게 구하시면 될 듯합니다.

 

 

아까 했던 방법과 마찬가지로 Edit Driver Settings 버튼을 눌러 라이브러리를 기존에 있던 것 지우고 edb-jdbc18.jar를 넣었습니다. 그런데.. 연결이 안 됩니다!! 흙 ㅠㅠ 알고 보니 PostgreSQL의 템플릿을 사용했기 때문에 클래스 명과 URL이 다르게 되어 있기 때문이었네요.

 

PPAS 용 클래스 명은 com.edb.Driver이며 jdbc:edb://localhost:5444/edb 이런 식으로 jdbc url도 다릅니다. 다시 드라이버 세팅으로 들어가서 Setting 탭에 클래스 이름과 URL 템플릿을 변경해주었고 연결에 성공했습니다!!

 

 

PPAS에 연결하기 위해 세팅 변경하기

 

여기까지  DBeaver를 사용해서 오라클, MSSQL, PPAS에 연결하는 방법을 알아보았습니다.

 

출처: by 모아모아뇽 2021. 7. 7.

일반적으로 MSSQL 은 데이터 파일 MDF / 로그 파일 ( 트랜잭션 ) LDF 로 나뉘어 집니다.

간혹가다 LDF 파일의 용량이 너무 늘어나 디스크 용량을 다 사용하게되어 장애가 나는 상황이 발생합니다.

이러한 상황이 오지 않게 하기 위해서는 주기적인 LDF 파일을 관리해주어야 합니다.

1. 로그파일 확인 (MB)

DBCC SQLPERF(LOGSPACE)

또는

EXEC SP_HELPFILE

2. 로그 파일 용량 줄이는 방법

-- Database Log 축소 작업

BACKUP LOG [Database] WITH TRUNCATE_ONLY

-- Database Log 삭제

BACKUP LOG [Database] WITH NO_LOG

-- Database 축소 작업 ( 파일 축소 작업 )

DBCC SHRINKFILE (DB파일,10)

DBCC SHRINKFILE (DB_LOG파일,10)

간혹 해당 작업을 해도 LDF 파일이 줄어들지 않는 경우가 있습니다.

그럴땐 SSMS 를 활용하여 간편하게 줄일 수 있습니다.

1. 해당 데이터베이스 속성 클릭

2. 데이터베이스 복구모델 단순 (SIMPLE) 로 변환

3. 축소작업 진행

[출처] MSSQL MDF, LDF SHRINK 파일 용량 줄이기

 

저장 프로시저(stored procedure) 안에서 다른 저장 프로시저를 호출하려면 크게 보자면 2가지 방법이 있습니다.
Exec(EXECUTE)나 sp_executesql를 이용하면 됩니다.
( 참고 : MSDN - sp_executesql 사용)

 

여기서는 Exec(EXECUTE)를 이용하는 방법을 설명하겠습니다.

1. 리턴값이 없을 때

리턴값이 없으면 그냥 호출하면 됩니다.

 

--Exec [저장프로시저 이름]
--Exec [저장프로시저 이름] [매개변수1],[매개변수2],....
Exec TestSelect @temp

 

 

2. 리턴값이 있을 때

 

리턴값은 항상 int형이므로 인티저형의 변수를 하나 선언한 후 값을 대입하는 방식으로 받습니다.

 

--Exec [값을 받을 변수] = [저장프로시저 이름] [매개변수1],[매개변수2],....
Declare @nTemp int
Exec @nTemp = TestSelect @temp

 

3. 셀랙트(Select)값이 있을 때

셀랙트로 값을 받아올 때는 임시테이블이나 테이블 변수를 사용하면 됩니다.
임시테이블보다는 테이블 변수를 사용한 방법이 좋습니다.
( 참고 : [MSSQL] 저장프로시저에서 테이블(Table) 변수 사용하기 )

이런 식으로 셀랙트 값을 받을 수 있습니다.

 

--임시테이블
Declare @tableTemp table
	( sTemp varchar(32))
Insert @tableTemp exec [저장프로시저 이름] [매개변수1],[매개변수2]

 

 
 

 

[출처] : blog.danggun.net/1255

 

 

========================================

-- 1번 프로시져
CREATE PROCEDURE dbo.P_Stat (
  @IN_X_Seq  int
  ,@OP_A varchar(10) OUTPUT
  ,@OP_B int OUTPUT
)
AS
Begin

  SET @OP_A = 'test'
  SET @OP_B = 5
  RETURN
End
GO

========================================
-- 2번 프로시져. 1번을 호출
CREATE PROCEDURE dbo.P_Order (
  @IN_X_Seq  int
)
AS
Begin
 Declare  @OP_A varchar(10)
 Declare @OP_B int

 -- 프로시져를 실행해서 반환값을 반환받습니다.
 --실행하실때 output 데이터를 받을 변수를 같이 넣어주시면 됩니다.
 --그리고 담아진 변수값을 print로 찍어보시면 되구요.

 EXEC P_Stat @IN_X_Seq = @IN_X_Seq , @OP_A output, @OP_B output

 print @OP_A

 print @OP_B

End
GO

 

[출처] blog.naver.com/idtong/130071970020

-- 값에서 검색값의 시작위치를 반환

oracle : select instr('달력1,달력2,달력3', ',', 1) from dual; ----> 4를 반환

mssql : select charindex(',', '달력1,달력2,달력3') ----> 4를 반환

-- 조건 비교 후 처리시

oracle : decode(조건, true값, false값)

mssql : case when 조건 then true값 else false값 end

-- 현재일에서 1달 뒤 구하기

oracle : SELECT ADD_MONTHS(SYSDATE, 1) FROM DUAL;

mssql : SELECT DATEADD(mm, 1, GETDATE())

-- 날짜로 변환

oracle : SELECT TO_DATE('202005' || '01','YYYYMMDD' ) FROM DUAL;

mssql : SELECT CAST('202005' + '01' AS DATE)

-- 널값시 처리

oracle : NVL(END_YN, 'N')

mssql : ISNULL(END_YN, 'N')

-- 사용된 바이트 수를 반환합니다

oracle : vsize(expression)

mssql : DATALENGTH ( expression )

-- 조건문

oracle : IF 조건1 THEN 처리1 ELSIF 조건2 THEN 처리2 ELSE 처리3 END IF;

mssql : IF 조건1 처리1 ELSE IF 조건2 처리2 ELSE 처리3

-- 변수에 값 할당시

oracle : param := 0;

mssql : SET @param = 0;

-- 문자열 자르기

oracle : substr('20200520', 1, 4) --- 2020

mssql : substring('20200520', 1, 4)

oracle : substr('20200520', 0, 4) --- 2020

mssql : substring('20200520', 1, 4) -- 변환 작업시 주의해서 1로 수정해야 함

-- 절삭하기

oracle : SELECT TRUNC(150.75, 1) FROM DUAL;

mssql : SELECT ROUND(150.75, 1, 1);

-- 나머지 구하기

oracle : SELECT MOD(12,5) FROM DUAL;

mssql : SELECT 12%5

-- 두 기간의 월 수 구하기

oracle : SELECT TRUNC(MONTHS_BETWEEN(TO_DATE('2020-06-05','RRRR-MM-DD'), TO_DATE('2020-05-01','RRRR-MM-DD'))) "month" FROM DUAL;

mssql : SELECT DATEDIFF(MONTH, CAST('2020-05-01' AS DATE), CAST('2020-06-05' AS DATE))

-- 마지막 일자 구하기

oracle : select TO_CHAR(LAST_DAY(sysdate), 'DD') from dual

mssql : select DAY(DATEADD(DAY,-1,DATEADD(MONTH,1,CAST(CONVERT(CHAR(6),GETDATE(),112)+'01' AS DATE))))

-- 올림

oracle : select ceil(1.1) from dual; -- 2

mssql : select ceiling(1,1) -- 2

-- ORACLE

SELECT LEVEL_CODE,

LAG(LEVEL_CODE) OVER (ORDER BY LEVEL_CODE) UPLEVEL,

LAG(GRADE_CODE) OVER (ORDER BY LEVEL_CODE) UPGRADE

FROM HR_CODE_LEVEL

-- MSSQL

SELECT A.LEVEL_CODE, B.LEVEL_CODE UPLEVEL, B.GRADE_CODE UPGRADE

FROM

(SELECT ROW_NUMBER() OVER(ORDER BY LEVEL_CODE) ROWID, LEVEL_CODE, LEVEL_NAME, GRADE_CODE FROM HR_CODE_LEVEL) A

LEFT OUTER JOIN

(SELECT ROW_NUMBER() OVER(ORDER BY LEVEL_CODE) ROWID, LEVEL_CODE, LEVEL_NAME, GRADE_CODE FROM HR_CODE_LEVEL) B

ON

A.ROWID = B.ROWID+1

 

[출처] blog.naver.com/dbbible/221969929542

숫자는 가슴너비/ SRL은 키

S 스몰 173cm 이하
R 레귤러 173~180장도
L 라지 180cm 이상 

-----------------------------------------------------------------

수트 사이즈 정보

 

다음의 미국의 한 사이트에 나온 수트 사이즈 기준과 측정방법이다.

(http://www.suitupp.com/pages/suit_sizing)

 

수트와 스포트 코트(sport coat)

 

다음의 정보들은 일반적인 것일 뿐이고 사이즈는 수트마다 다를 수 있다.

 Suit size 

 38R

40R

 42R

 44R 

 46R 

 48R 

 50R

 Chest (in/cm)

 40" 

(101.6)

 42"

(106.68)

 44" 

(111.76)

 46" 

(116.84)

 48"

(121.92)

 50"

(127)

 52"

(132.08)

 Shoulder (in/cm)

 18"

(45.72)

 18.5"

(46.99)

 19"

(48.26)

 19.5"

(49.53)

 20"

(50.8)

 20.25"

(51.435)

 20.5"

(52.07)

 Length (in/cm)

 30.5"

(77.47)

 31"

(78.74)

 31"

(78.74)

 31"

(78.74)

 31"

(78.74)

 31.5"

(80.01)

 31.75"

(80.645)

 Sleeve (in/cm)

 24.5"

(62.25)

 25"

(63.5)

 25"

(63.5)

 25.25"

(64.135)

 25.25"

(64.135)

 25.25"

(64.135)

 25.5"

(64.77)

 Waist Size (in/cm)

 32"

(81.28)

 34" 

(86.36)

 36"

(91.44)

 38"

(96.52)

 40"

(101.6)

 42"

(106.68)

 44"

(111.76)

 Outseam (Unhemmed)

(in/cm)

 47"

(119.38)

 47"

(119.38)

 47"

(119.38)

 47"

(119.38)

 47"

(119.38)

 47"

(119.38)

 47"

(119.38)

 Inseam(Unhemmed)

(in/cm)

 36"

(91.44)

 36"

(91.44)

 36"

(91.44)

 36"

(91.44)

 36"

(91.44)

 36"

(91.44)

 36"

(91.44)

 Fabric to Let Out

(in/cm)

 1.5"

(3.81)

 1.5"

(3.81)

 1.5"

(3.81)

 1.5"

(3.81)

 1.5"

(3.81)

 1.5"

(3.81)

 1.5"

(3.81)

 

 

 

Chest (가슴)  - 양쪽 팔 아래에서 측정

Shoulder (어깨) - 등을 가로질러 어깨의 맨 위에서 솔기(seam)에서 솔기 사이를 측정

Length (길이) - 깃(collar)의 아래에서 재킷의 끝까지 측정

Sleeve - 숄더 슬리브(shoulder sleeve) 맨위에서 솔기의 끝까지 측정

 

자세한 내용은 다음과 같다.

 

1. 가슴 

 

- 양팔의 바로 아래에서 측정하되 견갑골을 가로질러 줄자의 높이를 유지한다(숨을 참지는 않는다). 견갑골을 가로지르는 것을 명심하고 가슴의 가장 두꺼운 부분을 재야한다. 블레이져의 사이즈는 당신의 가슴 사이즈와 같다. 예를 들어 당신의 가슴이 38" 이면 당신은 38"의 블레이져를 입는다. 당신이 Short (S), Regular (R), 또는 Long (L) 수트를 어떻게 선택해야 하는지는 다음 아래의 그림을 참고하라.

 

설명: 

 

- 수트의 실제 가슴 측정치는 적절한 움직임을 위해 수트의 사이즈 보다 전형적으로는 2 인치가 더 크다.

- 수트의 유럽사이즈는 US 사이즈보다 10 이 크다. 예를 들어 유럽사이즈 50은 US 사이즈 40 이다.

- 전형적인 수트바지의 허리사이즈는 수트사이즈보다 6 인치가 작다. 예를 들면 수트 사이즈 42 자켓은 36 인치 허리사이즈 바지와 함께이다.

 

수선 정보: 

 

- 자켓의 허리가 너무 크다면 재단사에 의해 쉽게 줄일 수 있다. 

- 슬랙스(slacks)가 1-2 인치가 크거나 작다면 재단사가 쉽게 줄이거나 늘릴 수 있다. 만일 슬랙스가 2 인치 이상 크다면 재단사는 다시 재단해야 한다(좀 더 비싸다).

 

 

 

즉 대략적으로 

Short : 162.56 cm ~ 167.64 cm

Regular : 170.18 cm ~ 180.34 cm

Long : 182.88 cm ~

 

그런데 aerostich 라는 바이크 라이더 자켓을 만드는 브렌드에서는 다음과 같이 소개하고 있다.

(http://www.aerostich.com)

 잘 보면 S, R, L의 기준 키가 각 사이즈마다 달라진다. 즉, 절대적인 키가 아니라 각 사이즈마다의 상대적인 키에 따른 수치로 나온다.

 

 

 

2. Neck - 목의 중간부위에서 목젖 또는 목의 가장 두꺼운 부위의 둘레를 잰다. 좀 더 편안한 사이즈를 원한다면 줄자와 목 사이에 검지손가락 하나가 들어간 상태로 잰다.

 

3. Sleeve/Arm - 팔을 허리에 두고 팔꿈치를 90도 구부린다. 목뒤 가운데에서 어깨를 가로질러 팔꿈치와 손목까지 잰다. 

 

4. Waist - 당신의 바지 중 하나의 허리사이즈를 확인해봐라. 일반적으로 사이즈가 적혀있을 것이다. 만일 없다면 다음을 따라온다. 

 

몸과 줄자 사이에 손가락 하나를 넣은 채로 당신의 자연적인 허리라인(보통은 배꼽주변이다.) 둘레를 측정한다. 바지의 사이즈는 일반적으로 당신의 허리사이즈와 같다. 예를 들면 당신의 허리사이즈가 38 인치라면 당신은 38인치의 바지를 입어야 한다. 당신의 슬랙스가 1-2인치 크거나 작다면 재단사가 쉽게 줄이거나 늘릴 수 있다는 것을 기억하라.

 

한편 당신에게 잘 맞는 한쌍의 바지를 이용해서 바지 다리의 안쪽 심으로 부터 다리 아래끝까지 측정한다. 여기서 반 인치로 반올림한 길이가 인심의 길이이다. 슬랙스의 유럽사이즈는 US 사이즈보다 16이 크다. 예를 들면 유럽사이즈 52는 US 사이즈 36과 같다. 

 

5. Inseam : 적당한 신발을 신고 가랑이로부터 원하는 바지의 길이까지 측정한다. 인심의 길이는 스타일에 따라 다르다. 일반적으로 당신에게 잘 맞는 한쌍의 바지를 이용해서 바지 다리의 안쪽 심으로 부터 다리 아래끝까지 측정한다. 여기서 반 인치로 반올림한 길이가 인심의 길이이다.

 

 

 

그리고 미국의 XS, S, M, L의 기준은 다음과 같다.

(http://www.sizeguide.net/size-guide-men-size-chart.html)

 

 

 

국제적인 사이즈로 변환한다면 다음과 같다.

(http://www.sizeguide.net/mens-clothing-sizes-international-conversion-chart.html)

 

 

 



 

 

물론 우리나라의 수트 브랜드들에서는 다른 사이즈표를 쓰는 것 같다.

 

다음은 우리나라 브랜드 갤럭시에 나와있는 사이즈표

http://www.fashionpia.com/

 

이런식으로 466, 477, 577 등으로 표시되는데 아마도 맨 앞의 숫자는 키, 가운데 숫자는 가슴둘레, 세번째 숫자는 허리둘레인 것 같다. 

 

 

 

결론은 브랜드마다 다르고 정말 잘 맞는지는 입어봐야 안다는 것.

 

 

 

 

출처 : blog.naver.com/uncledr/220258532827

 

 

 

'24/7 > 일상 필요한것들' 카테고리의 다른 글

아이폰 벨소리 만들고 아이튠즈로 넣기  (0) 2020.06.03

몇년전부터 했지만 자주 까먹어서 아예 내 블로그에 남겨놓기

 

 

벨소리로 사용할 구간을

미리듣고 결정! 40초 안으로

먼저 음악파일을 아이튠즈로 넣어줍니다. 그러면 이렇게 음악파일이 들어간것을 확인할 수 있습니다. 왼쪽에 보면 메뉴가 보이는데, 여기서 노래로 들어갑니다. 노래를 먼저 듣습니다. 노래 전체를 벨소리로 설정은 못하기 때문에 어느부분을 구간으로 설정을 할지 미리 확인을 하는것이 좋습니다. 벨소리로 적용할 구간을 40초가 넘지 않게 들으면서 선택을 합니다.

들으면서 어떤 부분을 벨소리로 설정할지 결정을 했다면, 노래로 들어가서, 내가 사용할 음악위에 포인터를 올리고, 마우스 우클릭을 한뒤 노래 정보로 들어갑니다.

그러면 음악 정보가 나오는데, 옵션으로 들어갑니다. 그리고는 내가 벨소리로 사용할 구간을 시작과 중단에 넣어줍니다. 저는 음악의 후렴부를 사용할것이어서 56초부터 1분 36초로 설정을 했습니다. 40초가 넘어가지 않도록 설정을 해주면 되겠습니다. 그리고 확인을 눌러줍니다.

그리고 파일 변환을 해줘야하는데, 메뉴의 파일로 가서, 변환으로 들어간뒤 AAC 버전 생성을 눌러줍니다. 그러면 바로 파일변환이 시작이 됩니다. 시간이 짧기 때문에 아주 빨리 생성이 완료가 되더라고요.

40초 짜리 파일이 만들어진것을 확인할 수 있습니다. 이제 확장자를 바꿔줘야 합니다. 마우스 우클릭을 한뒤 Windows Explorer 에서 보시를 눌러줍니다.

확장자를 m4r로 바꾸자

확장자를 m4r로 바꿔줘야 합니다. 그러면 사용할 수 없게 될수도 있다고 경고가 뜨게 되는데, 예를 눌러주면 되겠습니다.

만약 확장자가 변경이 안된다면, 폴더옵션으로 가서, 보기탭의 알려진 파일 형식의 파일 확장명 숨기기에 체크가 되어 있는것을 체크를 없애주면 되겠습니다. 그러면 확장자가 보이고 확장자를 변경할 수 있습니다.

아이폰 벨소리 넣는법 거의다 끝나갑니다. 이제 컴퓨터와 USB로 연결을 합니다. 그러면 아이튠즈에 아이폰이 인식이 되면서, 아이폰 메뉴가 뜨게 될것입니다.

소리에 드래그 해서

넣어주면 끝!

아이폰 메뉴 중 소리로 들어갑니다. 그러면 소리에 아무것도 없는데요. 여기서 이번에 만들어준 벨소리 파일을 드래그 해서 넣어주면 되겠습니다. 파일 용량이 크지 않기 때문에, 바로 들어가는것을 확인할 수 있습니다. 그러면 벨소리 넣기가 모두 끝납니다.

아이폰의 벨소리로 들어가면, 방금 내가 만들어 넣은 것을 확인할 수 있습니다. 적용하면 끝이겠죠? 아이튠즈 소리에서 내가 넣었던 벨소리를 제거하면 다시 제거가 됩니다. 막상해보니 어렵지 않죠? 기본도 좋지만, 이렇게 직접 만들어서, 적용해보시기 바랍니다.

​출처 : https://blog.naver.com/neces2/221761890200

'24/7 > 일상 필요한것들' 카테고리의 다른 글

해외 직구를 위한 기성복 사이즈 확인  (0) 2020.10.20

mssql  줄바꿈 치환

 

 

 REPLACE(REPLACE(CONTENT, char(13) , '' ) ,  char(10), '' ) 

 

 

 

* 줄바꿈, 탭문자 제거 방법(text 타입도 포함)

 

 

- 변경 스트링 함수

replace([컬럼명], [변경할 문자], [변경될 문자])

 

- 엔터, 탭 문자 제거 함수 활용

Tab : char(9)

Line feed: char(10)

Carriage return: char(13)

 

 

>엔터 : replace(replace([컬럼명], char(13), ''), char(10), '')

>탭 : replace([컬럼명], char(9), '')

 

 

 텍스트 타입일 경우, [replace 함수의 인수 1에 대한 인수 데이터 형식 text이(가) 잘못되었습니다.] 에러를 확인할 수 있다.

 

=> replace(convert(varchar(max), [컬럼명]), [변경할 문자], [변경될 문자])

 

TEXT 타입 컬럼명 모두 치환

replace(replace(replace(convert(varchar(max),isnull([컬럼명], '-')), char(9), ' '),char(10), ' '), char(13), '') AS [컬럼명

출처: https://ngio.co.kr/3253

정렬되지 않은 컬럼데이터를 row_number로 다시 넣는 쿼리
해당 쿼리를 통해 PK값에 잡혀 있던 컬럼의 값을 다시 정렬해서 넣을 수 있을거 같음

  UPDATE A
  SET A.NUM = A.RowNum
   FROM ( 
SELECT NUM, ROW_NUMBER() OVER (ORDER BY 정렬기준의컬럼 ASC) AS RowNum 
FROM 테이블명  
WHERE  (1 = 1) AND ownerID IN ('62') : 원하는 조건넣는 부분

)
) AS A

- 아파치 ( 수동으로 실행 시 root 계정으로 실행 )

/etc/rc.d/rc.local 파일에 다음 내용을 추가

/usr/local/apache/bin/apachectl start



- 톰캣

/etc/rc.d/init.d/tomcat 이란 파일로 아래 내용 작성

==================================================

#!/bin/sh

# Source function library.

. /etc/rc.d/init.d/functions

source /etc/profile

export tomcat_HOME=톰캣 경로

# See how we were called.

case "$1" in

start)

echo -n "Starting tomcat EXPERIMENTAL: "

daemon $tomcat_HOME/bin/startup.sh

echo

;;

stop)

echo -n "Shutting down tomcat EXPERIMENTAL: "

daemon $tomcat_HOME/bin/shutdown.sh

echo

;;

restart)

$0 stop

$0 start

;;

*)

echo "Usage: $0 {start|stop|restart}"

exit 1

esac

exit 0

==================================================


# chmod 755 /etc/rc.d/init.d/tomcat  권한 설정

# /etc/rc.d/init.d/tomcat   실행테스트


Usage : {start|stop|restart} 이 메세지가 뜨면 완성




출처: http://www.parkjinsu.com/23 [SomeThing]



==================

좀더 많은 내용


#!/bin/bash
#
# tomcat
#
# chkconfig: 345 96 30
# description:  Start up the Tomcat servlet engine.
#
# processname: java
# pidfile: /var/run/tomcat.pid
#
### BEGIN INIT INFO
# Provides: tomcat
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Should-Start: distcache
# Short-Description: start and stop Apache HTTP Server
# Description: implementation for Servlet 2.5 and JSP 2.1
## END INIT INFO
 
# Source function library.
/etc/init.d/functions
 
## tomcat installation directory
PROCESS_NAME=tomcat-servicename
 
CATALINA_HOME="/home/lesstif/apache-tomcat-7.0.54/"
 
## run as a diffent user
TOMCAT_USER=lesstif
 
##  Path to the pid, runnning info file
pidfile=${PIDFILE-/var/run/${PROCESS_NAME}.pid};
lockfile=${LOCKFILE-/var/lock/subsys/${PROCESS_NAME}};
 
RETVAL=0
 
case "$1" in
 start)
        PID=`pidofproc -p ${pidfile} ${PROCESS_NAME}`
        if [[ (-n ${PID}) && ($PID -gt 0) ]]; then
                logger -s "${PROCESS_NAME}(pid ${PID}) is  already running."
                exit;
        fi
        if [ -f $CATALINA_HOME/bin/startup.sh ];
          then
            logger -s "Starting Tomcat"
            /bin/su -l ${TOMCAT_USER} -c "$CATALINA_HOME/bin/startup.sh -Dprocessname=${PROCESS_NAME}"
            PID=`ps -eaf|grep processname=${PROCESS_NAME}|grep -v grep|awk '{print $2}'`
            RETVAL=$?
            [ $RETVAL = 0 ] && touch ${lockfile}
            [ $RETVAL = 0 ] && echo "${PID}" > ${pidfile}
        fi
        ;;
 stop)
        PID=`pidofproc -p ${pidfile} ${PROCESS_NAME}`
        ## if PID valid run shutdown.sh
        if [[ -z ${PID} ]];then
            logger -s "${PROCESS_NAME} is not running."
            exit;
        fi
 
        if [[ (${PID} -gt 0) && (-f $CATALINA_HOME/bin/shutdown.sh) ]];
          then
            logger -s "Stopping Tomcat"
            /bin/su -l ${TOMCAT_USER} -c "$CATALINA_HOME/bin/shutdown.sh"
            RETVAL=$?
            [ $RETVAL = 0 ] && rm -f ${lockfile}
            [ $RETVAL = 0 ] && rm -f ${pidfile}
        fi
        ;;
 status)
        status -p ${pidfile} ${PROCESS_NAME}
        RETVAL=$?
        ;;
 restart)
         $0 stop
         $0 start
         ;;
version)
        if [ -f $CATALINA_HOME/bin/version.sh ];
          then
            logger -s "Display Tomcat Version"
            /bin/su -l ${TOMCAT_USER} -c "$CATALINA_HOME/bin/version.sh"
            RETVAL=$?
        fi
        ;;
 *)
         echo $"Usage: $0 {start|stop|restart|status|version}"
        exit 1
        ;;
esac
exit $RETVAL


출처 : https://www.lesstif.com/pages/viewpage.action?pageId=6979609



<script type="text/javascript">
function isMobile(){
	var UserAgent = navigator.userAgent;

	if (UserAgent.match(/iPhone|iPod|Android|Windows CE|BlackBerry|Symbian|Windows Phone|webOS|Opera Mini|Opera Mobi|POLARIS|IEMobile|lgtelecom|nokia|SonyEricsson/i) != null || UserAgent.match(/LG|SAMSUNG|Samsung/) != null){
		return true;
	}else{
		return false;
	}
}

if(isMobile()){
	location.href = "https://MOBILE_URL";	//모바일페이지
}else{
	location.href = "https://PC_URL";	//PC페이지
}
//홈페이지 개발시 접속 경로를 알아 오려했을 때 모바일과의 분류 방법 
//페이지 로드시에 함수가 실행되어서 로드됨과 동시에 모바일은 모바일 페이지로 처리

</script>


회사에서 에버노트 스티키 메모가 막혀서 윈도우7 메모로 대체 중 C:\사용자\사용자명\AppData\Roaming\Microsoft\Sticky Notes\StickyNotes.snt

(*AppData 는 숨김 폴더) 파일을 복사하여, 복원하려는 윈도우에 해당 경로에 붙여 넣기


그외 스티커 메모 단축키 Ctrl + N : 새로 만들기 Ctrl + A : 전체 선택 Ctrl + C : 복사 Ctrl + X : 잘라내기 Ctrl + V : 붙여넣기 Ctrl + B : 굵게 Ctrl + U : 밑줄 Ctrl + I : 기울이기 Ctrl + Z : 실행 취소 Ctrl + Y : 다시 실행 Ctrl + D : 메모 지우기 Ctrl + E : 가운데 정렬 Ctrl + L : 좌측 정렬 Ctrl + R : 우측 정렬 Ctrl + Shift + > : 글씨 크기 크게 Ctrl + Shift + < : 글씨 크기 작게 Ctrl + T : 가운데 줄 Ctrl + 1 : 줄간격 보통 Ctrl + 2 : 줄간격 넓게 Ctrl + Shift + L : 글머리 기호 (창 드래그로 옮기면서) →←↑↓방향키 : 10픽셀씩 이동



EditPlus

C:\Users\해당계정명\AppData\Roaming\EditPlus 3 

EDITPLUS 메뉴 / 도구 ​/ 디렉토리지정 누르시면 INI 경로 대로 찾아가시면 됩니다.

APPDATA같은경우 숨김 폴더라 안보이니 숨김폴더 표시하시고 진행하세요

위 폴더에서 editplus_u.ini파일과 ftp2_u.ini파일이 백업파일입니다.  

editplus_u.ini 파일은 Editplus의 환경설정, 
ftp2_u.ini 파일은 FTP 계정 설정입니다. 

 

=> 해당 파일을 editplus 설치된 경로에 복사   ex) C:\Program Files\EditPlus 에 붙여 넣기

 

 

FileZilla

C:\Users\해당계정명\AppData\Roaming\FileZilla

 

sitemanager.xml

=> 해당 파일을 설치한 파일질라에서 불러오기 하던가 붙여 넣기

 : Roaming\해당 경로에 붙여 넣기

 

출처 : http://blog.naver.com/sg91037/220977671864
SecureCRT

C:\Users\해당계정명\AppData\Roaming\VanDyke\Config

하위 전체를 복사하여 붙여 넣기 진행

 : Roaming\해당 경로에 붙여 넣기

[중요팁]


- xml, json : 서버가 클라이언트에게 데이터를 전달할 때 표현하는 방법

xml : 태그로 구분해서 데이터를 표현, 사람이 보기 쉽지만, json보다 용량 크고 웹에서 파싱과정이 복잡

json:java script객체를 표현하는 방법을 사용, 사람이 보기는 어렵지만, 용량이 xml보다 작고 웹에서 파싱이 수월

예> 서버가 보내는 메세지는 xml 또는 json으로 /  카카오톡 푸쉬, 광고 이미지 출력



json 문법


[      ]                배열

{      }                객체

:                           속성(멤버변수)과 값의 구분

,                           객체와 객체 / 속성과 속성 구분




[제이손 ajax로 파싱해서 가져오기, 소스파일]


<html>
 <head>
  <meta charset="UTF-8"/>
  <title>JSON 파싱</title>
 
  <style> </style>
  
  <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
  
  <script>
  
  //$(function(){})의 기능은 body의 구조를 파악하자 마자
     $(function(){
    $.ajax({
     url: "data.json",
     dataType: "json",
     success: function(data){
      //json의 경우는 data는 파싱된 결과
      //alert(data[0].num);
      $.each(data, function(index, item){
       alert(item.key + ":" +item.value);
       
       //객체를 가져다가 파싱
       //var ar=data["fields"];
       //var ar1=data["records"];
       //alert(ar[0].id+ar1[0].재산구분)
      })
      
     }
    })
   })
  </script>
  
  
   </head>
 <body>
  
 </body>
 
</html>




[json파일 만들기  "data.json"]


​[{"key":"1", "value" : "국어"},
{"key":"2", "value" : "수학"}]


출처 : http://blog.naver.com/vanillasea81/220385546099




1. 신규 계정 생성

 

 - useradd [계정명]

 

 ex) useradd daum 

      => daum 이라는 계정 생성

 

2. 패스워드 설정

 - passwd [계정명]

  입력 후 비밀번호 입력 하는 칸이 나옴

 

 ex) passwd daum

     => daum 이라는 계정의 비밀번호 설정

     암호 입력 칸 나옴 (입력 / 입력확인)

 

3. 폴더 생성

  - mkdir [폴더명]

  폴더를 생성하려는 경로에서 실행하면 해당 경로에서 바로 생성 (추천)

 

 ex) mkdir dirdaum

     => dirdaum 이라는 폴더를 명령어 입력한 경로에 생성

 

4. 폴더(디렉토리) 소유자 변경 (root 계정에서 실행)

  - chown -R [id]:[group] [folder or file]

   소유 권한을 [id]:[group]으로 변경 

    (-R 옵션으로 인해 하위 디렉토리까지 포함하여 변경)

 

  ex) chown -R daum:daum dirdaum

     => dirdaum 이라는 폴더 및 하위 디렉토리를 daum 아이디와 daum 그룹으로 소유로 변경

 

5. 권한 변경 => 파일질라 툴을 이용하는게 더 편하고 

 - chmod xxx [folder or file] : target 권한을 xxx형태로 변경

 - chmod -R xxx [target]: 하위 디렉토리 까지 변경

 

예) chomd 755 abc.txt 

  => abc.txt 텍스트 파일 권한을 755로 변경 

'프로그래밍 > Linux / Unix' 카테고리의 다른 글

[Linux] sqlplus 실행  (0) 2012.08.24
[Linux] 명령어  (0) 2012.08.24
[Linux/Unix] 리눅스/유닉스 명령어 레퍼런스  (0) 2012.08.20
[Linux] 리눅스 명령어 - 2  (0) 2012.08.20


HTML 특수문자코드표

 

표현문자

숫자표현

문자표현

설명

-

&#00;-&#08;

-

사용하지 않음

space

&#09;

-

수평탭

space

&#10;

-

줄 삽입

-

&#11;-&#31;

-

사용하지 않음

space

&#32;

-

여백

!

&#33;

-

느낌표

"

&#34;

&quot;

따옴표

#

&#35;

-

숫자기호

$

&#36;

-

달러

%

&#37;

-

백분율 기호

&

&#38;

&amp;

Ampersand

'

&#39;

-

작은 따옴표

(

&#40;

-

왼쪽 괄호

)

&#41;

-

오른쪽 괄호

*

&#42;

-

아스트릭

+

&#43;

-

더하기 기호

,

&#44;

-

쉼표

-

&#45;

-

Hyphen

.

&#46;

-

마침표

/

&#47;

-

Solidus (slash)

0 - 9

&#48;-&#57;

-

0부터 9까지

:

&#58;

-

콜론

;

&#59;

-

세미콜론

<

&#60;

&lt;

보다 작은

=

&#61;

-

등호

>

&#62;

&gt;

보다 큰

?

&#63;

-

물음표

@

&#64;

-

Commercial at

A - Z

&#65;-&#90;

-

A부터 Z까지

[

&#91;

-

왼쪽 대괄호

\

&#92;

-

역슬래쉬

]

&#93;

-

오른쪽 대괄호

^

&#94;

-

탈자부호

_

&#95;

-

수평선

`

&#96;

-

Acute accent

a - z

&#97;-&#122;

-

a부터 z까지

{

&#123;

-

왼쪽 중괄호

|

&#124;

-

수직선

}

&#125;

-

오른쪽 중괄호

~

&#126;

-

꼬리표

-

&#127;-&#159;

-

사용하지 않음

&#160;

&nbsp;

Non-breaking space

¡

&#161;

&iexcl;

거꾸로된 느낌표

&#162;

&cent;

센트 기호

&#163;

&pound;

파운드

¤

&#164;

&curren;

현재 환율

&#165;

&yen;

|

&#166;

&brvbar;

끊어진 수직선

§

&#167;

&sect;

섹션 기호

¨

&#168;

&uml;

움라우트

&#169;

&copy;

저작권

ª

&#170;

&ordf;

Feminine ordinal

&#171;

&laquo;

왼쪽 꺾인 괄호

&#172;

&not;

부정

­

&#173;

&shy;

Soft hyphen

?

&#174;

&reg;

등록상표

&hibar;

&#175;

&macr;

Macron accent

°

&#176;

&deg;

Degree sign

±

&#177;

&plusmn;

Plus or minus

²

&#178;

&sup2;

Superscript two

³

&#179;

&sup3;

Superscript three

´

&#180;

&acute;

Acute accent

μ

&#181;

&micro;

Micro sign (Mu)

&#182;

&para;

문단기호

·

&#183;

&middot;

Middle dot

¸

&#184;

&cedil;

Cedilla

¹

&#185;

&sup1;

Superscript one

º

&#186;

&ordm;

Masculine ordinal

&#187;

&raquo;

오른쪽 꺾인 괄호

¼

&#188;

&frac14;

4분의 1

½

&#189;

&frac12;

2분의 1

¾

&#190;

&frac34;

4분의 3

¿

&#191;

&iquest;

거꾸로된 물음표

A

&#192;

&Agrave;

Capital A, grave accent

A

&#193;

&Aacute;

Capital A, acute accent

A

&#194;

&Acirc;

Capital A, circumflex accent

A

&#195;

&Atilde;

Capital A, tilde

A

&#196;

&Auml;

Capital A, dieresis or umlaut mark

A

&#197;

&Aring;

Capital A, ring (Angstrom)

Æ

&#198;

&AElig;

Capital AE diphthong (ligature)

C

&#199;

&Ccedil;

Capital C, cedilla

E

&#200;

&Egrave;

Capital E, grave accent

E

&#201;

&Eacute;

Capital E, acute accent

E

&#202;

&Ecirc;

Capital E, circumflex accent

E

&#203;

&Euml;

Capital E, dieresis or umlaut mark

I

&#204;

&Igrave;

Capital I, grave accent

I

&#205;

&Iacute;

Capital I, acute accent

I

&#206;

&Icirc;

Capital I, circumflex accent

I

&#207;

&Iuml;

Capital I, dieresis or umlaut mark

Ð

&#208;

&ETH;

Capital Eth, Icelandic

N

&#209;

&Ntilde;

Capital N, tilde

O

&#210;

&Ograve;

Capital O, grave accent

O

&#211;

&Oacute;

Capital O, acute accent

O

&#212;

&Ocirc;

Capital O, circumflex accent

O

&#213;

&Otilde;

Capital O, tilde

O

&#214;

&Ouml;

Capital O, dieresis or umlaut mark

×

&#215;

&times;

Multiply sign

Ø

&#216;

&Oslash;

width="130"Capital O, slash

U

&#217;

&Ugrave;

Capital U, grave accent

U

&#218;

&Uacute;

Capital U, acute accent

U

&#219;

&Ucirc;

Capital U, circumflex accent

U

&#220;

&Uuml;

Capital U, dieresis or umlaut mark

Y

&#221;

&Yacute;

Capital Y, acute accent

Þ

&#222;

&THORN;

Capital Thorn, Icelandic

ß

&#223;

&szlig;

Small sharp s, German (sz ligature)

a

&#224;

&agrave;

Small a, grave accent

a

&#225;

&aacute;

Small a, acute accent

a

&#226;

&acirc;

Small a, circumflex accent

a

&#227;

&atilde;

Small a, tilde

a

&#228;

&auml;

Small a, dieresis or umlaut mark

a

&#229;

&aring;

Small a, ring

æ

&#230;

&aelig;

Small ae diphthong (ligature)

c

&#231;

&ccedil;

Small c, cedilla

e

&#232;

&egrave;

Small e, grave accent

e

&#233;

&eacute;

Small e, acute accent

e

&#234;

&ecirc;

Small e, circumflex accent

e

&#235;

&euml;

Small e, dieresis or umlaut mark

i

&#236;

&igrave;

Small i, grave accent

i

&#237;

&iacute;

Small i, acute accent

i

&#238;

&icirc;

Small i, circumflex accent

i

&#239;

&iuml;

Small i, dieresis or umlaut mark

ð

&#240;

&eth;

Small eth, Icelandic

n

&#241;

&ntilde;

Small n, tilde

o

&#242;

&ograve;

Small o, grave accent

o

&#243;

&oacute;

Small o, acute accent

o

&#244;

&ocirc;

Small o, circumflex accent

o

&#245;

&otilde;

Small o, tilde

o

&#246;

&ouml;

Small o, dieresis or umlaut mark

÷

&#247;

&divide;

Division sign

ø

&#248;

&oslash;

Small o, slash

u

&#249;

&ugrave;

Small u, grave accent

u

&#250;

&uacute;

Small u, acute accent

u

&#251;

&ucirc;

Small u, circumflex accent

u

&#252;

&uuml;

Small u, dieresis or umlaut mark

y

&#253;

&yacute;

Small y, acute accent

þ

&#254;

&thorn;

Small thorn, Icelandic

y

&#255;

&yuml;

Small y, dieresis or umlaut mark



출처 : http://egloos.zum.com/keep/v/1030642

출처 : http://blog.naver.com/skywood1/220330131740


전자정부 프레임워크 3.2 공통 콤포넌트

URL : http://www.egovframe.go.kr/ (전자정부프레임워크)


​전자정부프레임워크를 이해하려면 예제를 한번 돌려보는 것이 중요하다. 위의 사이트에서 공통 콤포넌트를 다운받아서 설치해보자.

필요한 것은 포기하지 않는 근성이다.


0. 설치 관련


- new -> eGovFrame Web Project로 이름과 group id를 입력하고 finish를 한다.
- import의 Archive File을 선택하여 해당 zip파일을 선택해주면 자동으로 등록이 된다.

- DB script는 (/src/script/) 해당 DB에 ddl, dml을 사용하여 테이블과 기본 정보들을 생성한다.
- 해당 전자정부 공통프레임워크에 설정정보를 참고하여 인증과 sms관련 설정을 pom.xml파일에 해준다.



인증서 로그인 컴포넌트는 행정전자서명 인증관리센터에서 제공하는 표준보안 API를 사용합니다.


1. GPKI 라이브러리를 사용하실 경우

 - 행정전자서명 인증관리센터에 공무원이 직접 신청하여 라이브러리를 제공받아야 합니다.

   (GPKI서비스관련 URL : http://www.gpki.go.kr)

 - 제공받은 라이브러리를 다음 경로에(\src\main\webapp\WEB-INF\lib) GPKI 라이브러리를 넣으시면 오류없이 사용이 가능합니다.

 

2. GPKI 라이브러리를 사용하지 않으실 경우


 - 아래의 안내에 따라 조치하시면 오류를 제거하실 수 있습니다.


============================================================================================

2-1.pom.xml 파일에 주석처리(pom.xml 파일 참조 : GPKI 관련 dependency 2종)


**************** pom.xml ****************

 <!-- GPKI인증서 로그인처리 라이브러리 -->

 <dependency>

  <groupId>kr.go.gpki</groupId>

  <artifactId>gpkisecureweb</artifactId>

  <version>1.0.4.9</version>

  <scope>system</scope>

  <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/gpkisecureweb-1.0.4.9.jar</systemPath>

 </dependency>

 <dependency>

  <groupId>kr.go.gpki</groupId>

  <artifactId>libgpkiapi_jni</artifactId>

  <version>1.4.0.0</version>

  <scope>system</scope>

  <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/libgpkiapi_jni-1.4.0.0.jar</systemPath>

 </dependency>

*****************************************


2-2. 관련 파일 삭제

* GPKI 인증서

src/main/java/egovframework/com/sec/pki/service/impl/EgovGPKIServiceImpl.java

src/main/java/egovframework/com/utl/sec/service/EgovCertInfoUtil.java

src/main/java/egovframework/com/utl/sec/web/EgovCertLoginController.java


3. SMS 라이브러리를 사용하실 경우

- 모바일 전자정부 M-gov(http://www.mgov.go.kr)에서 공무원이 직접 신청하여 라이브러리를 제공받아야 합니다.

- 제공받은 라이브러리를 다음 경로에(\src\main\webapp\WEB-INF\lib) SMSI 라이브러리를 넣으시면 오류없이 사용이 가능합니다.


4. SMS 라이브러리를 사용하지 않으실 경우

 - 아래의 안내에 따라 조치하시면 오류를 제거하실 수 있습니다.

============================================================================================

4-1.pom.xml 파일에 주석처리(pom.xml 파일 참조 : SMSI 관련 dependency 1종)

        <!--  M-Gov (SMS Service API) -->

        <dependency>

            <groupId>kr.go.mgov</groupId>

            <artifactId>smeapi</artifactId>

            <version>2.7</version>

            <scope>system</scope>

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

        </dependency>

*****************************************

4-2. 관련 파일 삭제

* SMS 컴포넌트

src/main/java/egovframework/com/cop/sms/service/impl/EgovSmsBasicReceiver.java

src/main/java/egovframework/com/cop/sms/service/impl/EgovSmsBasicServiceImpl.java

src/main/java/egovframework/com/cop/sms/service/impl/EgovSmsInfoReceiver.java

src/main/java/egovframework/com/cop/sms/service/impl/EgovSmsInfoSender.java

src/main/java/egovframework/com/cop/sms/service/impl/EgovSmsInfoServiceImpl.java

src/main/java/egovframework/com/cop/sms/web/EgovSmsInfoController.java

src/main/resources/egovframework/spring/com/context-scheduling-cop-sms.xml

* 서버자원모니터링 컴포넌트

src/main/java/egovframework/com/utl/sys/srm/service/EgovServerResrceMntrngScheduling.java

src/main/resources/egovframework/spring/com/context-scheduling-utl-sys-srm.xml


- DB 정보를 설정해준다. (JDBC)

  pom.xml의 DB 설정

        <!-- oracle 10g driver -->
        <dependency>
            <groupId>ojdbc</groupId>
            <artifactId>ojdbc</artifactId>
            <version>14</version>
            <scope>system</scope>
            <systemPath>D:\oracle\product\11.2.0\dbhome_1\jdbc\lib\ojdbc6.jar</systemPath>
        </dependency>


* 많은 에러를 보더라도 절대 굴복하지 말고 Google을 참고해서 해결하세요.


공통 컴포넌트는 데이터베이스 설정을 하는 spring context xml(dataSources)파일을 외부 properties파일에서 로드합니다.

/src/main/resources/egovframework/egovProps/globals.properties


Globals.DbType = oracle

Globals.DriverClassName=oracle.jdbc.driver.OracleDriver
Globals.Url=jdbc:oracle:thin:@127.0.0.1:1521:orcl

Globals.UserName = userid
Globals.Password = pass

* 설정시 필요사항


run-jetty-run 설치​

help->eclipse market place에서 jetty로 검색하여 install한다.

tomcat native library 설치

doc : http://tomcat.apache.org/tomcat-7.0-doc/apr.html 

login 정보

- 공통 콤포넌트 사용시

분류/id/pass : 업무/TEST1/공통12 ( 설치가 완료하여 웹페이지가 뜰 경우의 기본 로그인 정보이다 )


- simple homepage 사용시

* DB생성 및 데이터 생성은 DATABASE/all_sht_data_oracle.sql, DATABASE/all_sht_ddl_oracle로 생성하자.

id/pass : admin / 1

2. 포함된 라이브러리


- 기본
oauth : spring-social-facebook-web 1.1.1, spring-social-twitter 1.1.0, httpclient 4.3.4, commons-logging, h2 1.4.180
WYSIWYG Editor : ckeditor-java-core 3.5.3
fileupload : commons-fileupload 1.3.1


- DB

mysql : mysql-connector-java 5.1.31
ojdbc : ojdbc 14
altibase
tibero
cubrid


- WEB 개발시 필요
게시판 생성시 사용 TokenStream : antlr 3.5
우편번호를 위한 라이브러리 : oro 2.0.8
요소기술 달력을 위한 라이브러리 : icu4j 53.1


- PROTOCOL
FTP용 3rd party 라이브러리 : commons-net 3.3
Email : commons-email 1.3.2, sndng-mail 1.0


- 서비스 연동
WebSocket Messenger : javax.websocket-api 1.0, javax.json 1.0.4
facebook 연동시 추가 : spring-social-security 1.1.0, spring-security-web
Twitter : twitter4j-core 4.0.2


- 문서
PDF변환용 라이브러리 : jodconverter 2.2.1, slf4j-api, commons-io


- 기타
xmlParserAPI : batik-ext 1.7
XML스키마를 자바클래스로 생성하는 라이브러리 : xbean 2.2.0
Cross-Site Scripting : ldapsdk 4.1
LDAP조직도관리 관련 라이브러리 : spring-ldap-core 2.0.2
M-Gov (SMS Service API) : smeapi 2.7
GPKI인증서 로그인처리 라이브러리 : gpkisecureweb 1.0.4.9, libgpkiapi_jni 1.4.0.0
Ajax : ajaxtags-resources 1.5.7


3. 공통콤포넌트에서 구현된 서비스 기능


포털(예제) 메인화면
 
1. 포털(예제) 메인화면 


사용자디렉토리/통합인증
 
10. 로그인 
30. 로그인정책관리 


보안
 
60. 권한관리 
70. 권한그룹관리 
80. 그룹관리 
90. 롤관리 
100. 부서권한관리 


통계/리포팅
 
120. 게시물통계 
130. 사용자통계 
140. 접속통계 
150. 화면통계 
160. 보고서통계 
161. 자료이용현황통계 


협업
 
180. 게시판속성관리 
190. 게시판사용정보 
200. 템플릿관리 
250. 스크랩 목록 
270. 커뮤니티관리 
320. 부서일정관리 
330. 일정관리 
340. 일지관리 
350. 전체일정관리 
360. 메일발송 
361. 발송메일내역 
370. 명함관리 
371. 내명함목록 
380. 주소록관리 
390. 간부일정관리 
400. 부서업무함관리 
401. 부서업무정보 
410. 주간/월간보고관리 
420. 메모할일관리 
430. 메모보고 


사용자지원
 
450. 기업회원관리 
460. 업무사용자관리 
461. 부서관리 
470. 일반회원관리 
480. 마이페이지관리 
490. 약관관리 
500. 저작권보호정책 
510. 개인정보보호정책확인 
520. 도움말 
530. 용어사전 
540. FAQ관리 
550. Q&A관리 
551. Q&A답변관리 
560. 행정전문용어사전 
561. 행정전문용어사전관리 
570. 온라인매뉴얼 
571. 사용자온라인매뉴얼 
580. 상담관리 
581. 상담답변관리 
590. 설문관리 
600. 설문조사 
610. 설문템플릿관리 
620. 응답자관리 
630. 질문관리 
640. 항목관리 
650. 회의관리 
660. 온라인poll관리 
661. 온라인poll참여 
670. 뉴스관리 
680. 사이트관리 
700. 추천사이트관리 
710. 행사/이벤트/캠페인 
711. 외부인사정보 
720. 팝업창관리 
730. 정보알림이 
740. 배너관리 
741. MYPAGE배너관리 
750. 로그인화면이미지관리 
760. 최근검색어 조회 
770. 메인이미지관리 
771. 메인이미지 반영결과보기 
780. 통합링크관리 
790. 사용자부재관리 
800. 인터넷서비스안내및관리 
810. Wiki기능 
820. RSS태그관리 
822. RSS태그서비스 
830. Twitter연동 
831. Facebook 연동 
840. 쪽지관리 
850. 받은쪽지함관리 
860. 보낸쪽지함관리 
870. 회의실관리 
871. 회의실예약관리 
890. 직원경조사관리 
891. 직원경조사승인관리 
900. 휴가관리 
901. 휴가승인관리 
902. 개인연차관리 
910. 당직관리 
911. 당직체크관리 
920. 포상관리 
921. 포상승인관리 
930. 기념일관리 
931. 기념일목록(메인화면용) 
940. 행사신청관리 
941. 행사접수관리 
942. 행사접수승인관리 
943. 약도 관리 
950. 출퇴근관리 


시스템관리
 
960. 공통분류코드 
970. 공통상세코드 
980. 공통코드 
1000. 우편번호관리 
1010. 행정코드관리 
1020. 기관코드수신 
1030. 로그관리 
1040. 사용로그관리 
1050. 송/수신로그관리 
1060. 시스템이력관리 
1070. 웹로그관리 
1080. 접속로그관리 
1085. 개인정보조회로그관리 
1090. 메뉴리스트관리 
1091. 메뉴관리리스트 
1100. 메뉴생성관리 
1101. 사이트맵 
1110. 바로가기메뉴관리 
1111. 프로그램관리 
1112. 프로그램변경요청관리 
1113. 프로그램변경요청처리 
1114. 프로그램변경이력 
1120. 배치작업관리 
1130. 배치결과관리 
1140. 스케줄처리 
1150. 백업관리 
1151. 백업결과관리 
1160. 네트워크관리 
1170. 서버정보관리 
1171. 서버(S/W)목록 
1180. 장애신청관리 
1190. 장애처리결과관리 


시스템/서비스연계
 
1210. 시스템연계관리 
1220. 연계현황관리 
1230. 연계메시지관리 
1240. 연계기관관리 


디지털 자산 관리
 
1250. 개인지식관리 
1260. 지식맵관리(유형) 
1261. 지식맵관리(조직) 
1270. 지식전문가관리 
1280. 지식정보관리 
1290. 지식평가관리 
1291. 지식정보제공 


요소기술
 
1300. 공휴일관리(달력) 
2080. 송수신모니터링 
2090. DB서비스모니터링 
2100. HTTP서비스모니터링 
2110. 프로세스모니터링 
2120. 네트워크서비스모니터링 
2130. 파일시스템모니터링 
2140. 프록시서비스 
2150. 파일동기화(대상서버) 
2160. 로그인세션정보체크 
2170. 서버자원모니터링-대상목록 
2180. 주소정보연계 


외부 추가 컴포넌트
 
3000. JFile 가이드 
3010. JFile 파일 업로드 
3020. JFile 파일 다운로드 
3100. LDAP 조직도 트리 
3110. LDAP 조직도 그래프 
3200. 웹소켓 메신저 


출처 : http://blog.naver.com/skywood1/220330131740

'프로그래밍 > JAVA' 카테고리의 다른 글

자바 정규식 표현 정리  (0) 2012.08.31
indexOf와 startwith 의 차이  (0) 2012.08.13
HashMap, HashTable의 비교  (0) 2012.08.13

로그인에서 오른쪽 마우스 선택하여 "새 로그인"을 선택한다.

새로운 로그인 계정을 추가한다. 일반 탭에서 로그인 아이디와 암호 그리고 사용할 기본 데이터베이스 설정을 해준다.


사용자 매핑 선택하면 위와 같은 화면이 나온다. 위와 같이 권한을 준다. 데이터베이스 역할 멤버 자격을 잘 못 선택할 경우 사용자 권한 설정을 하여도 모든 테이블이 보이게 된다. 기본 public으로만 셋팅하고 확인을 누른다.

로그인에 test 계정이 추가 되었고, TEST 데이터 베이스에 사용자에 test도 추가 되었다.

test 사용자에서 마우스 오른쪽을 클릭한 후 "속성"을 선택하면 위와 같은 화면이 나온다. 일반에서 설정할 필요 없고, 보안개체를 선택한 후 위에서 추가 버튼을 선택한다.


개체 추가 화면이 보이고, 특정 개체를 선택한다.


개체 유형을 선택한다.

권한을 줄 개체 유형을 선택한 후 확인 버튼을 누른다.

개체 유형 선택 후 선택할 개체 이름을 입력한 후 이름 확인을 누르면 필터가 되고, 찾아보기를 선택하면 개체 유형에 맞는 모든 정보가 보인다. table이란 이름을 입력하고 이름 확인을 선택한다.

권한을 줄 테이블을 체크한 후 확인을 준다. Table_1을 선택한 후 확인을 누른다.

위와 같이 추가 되고 확인을 누른다.

위 테이블에 SELECT 권한만 주고 확인을 누른다.

새로 생성한 계정으로 로그인 하면 추가된 테이블만 조회 가능하다.


특정 명이 들어있는 테이블, 뷰, 프로시저, 함수 등이 많은 경우 개체유형 체크가 번거롭기 때문에..


스크립트 선택하여 새쿼리 창 작업을 선택 하면 아래와 같이 구분이 생성된다.
use [TEST]
GO
GRANT SELECT ON [dbo].[TestTable] TO [test]
GO
위 구문을 복사하고,

SELECT 'GRANT SELECT ON [dbo].[' + name + '] TO [test]'
FROM sysobjects
WHERE name like '%table%'


위와 같이 셀렉트를 날리면 table이 포함된 테이블, 뷰, 프로시저, 함수이 위 구문으로 생성되고 그 문을 복사하여 일괄 명령을 날리면 손쉽게 명이 같은 개체에 권한을 부여할 수 있다.


출처 : http://yhn321.tistory.com/121




 - MSSQL 날짜 변환표 (기준날짜를 대상으로 CONVERT 실행하여 날짜 형변환)
 
번호 쿼리  결과 코드
 0  CONVERT(VARCHAR, GETDATE(), 0)  01 02 2000 1:14PM  MM DD YYYY H:MM
 1  CONVERT(VARCHAR, GETDATE(), 1)  01/02/2000  MM/DD/YYYY
 2  CONVERT(VARCHAR, GETDATE(), 2)  00.01.02  YY.MM.DD
 3  CONVERT(VARCHAR, GETDATE(), 3)  02/01/00  DD/MM/YY
 4  CONVERT(VARCHAR, GETDATE(), 4)  02.01.00  DD.MM.YY
 5  CONVERT(VARCHAR, GETDATE(), 5)  02-01-00  DD-MM-YY
 6  CONVERT(VARCHAR, GETDATE(), 6)  02 01 00  DD MM YY
 7  CONVERT(VARCHAR, GETDATE(), 7)  01 02, 00  MM DD, YY
 8  CONVERT(VARCHAR, GETDATE(), 8)  13:14:15  HH:MM:SS
 9  CONVERT(VARCHAR, GETDATE(), 9)  01 02 2000 1:14:15.678PM  NN DD YYYY H:MM:SS.MS
 10  CONVERT(VARCHAR, GETDATE(), 10)  01-02-00  MM-DD-YY
 11  CONVERT(VARCHAR, GETDATE(), 11)  02/01/00  DD/MM/YY
 12  CONVERT(VARCHAR, GETDATE(), 12)  000102  YYMMDD
 13  CONVERT(VARCHAR, GETDATE(), 13)  02 01 2000 13:14:15.678  DD MM YYYY HH:MM:SS.MS
 14  CONVERT(VARCHAR, GETDATE(), 14)  13:14:15.678  HH:MM:SS.MS
 20  CONVERT(VARCHAR, GETDATE(), 20)  2000-01-02 13:14:15  YYYY-MM-DD HH:MM:SS
 21  CONVERT(VARCHAR, GETDATE(), 21)  2000-01-02 13:14:15.678  YYYY-MM-DD HH:MM:SS.MS
 22  CONVERT(VARCHAR, GETDATE(), 22)  01/02/00 1:14:15 PM  MM/DD/YY H:M:S
 23  CONVERT(VARCHAR, GETDATE(), 23)  2000-01-02  YYYY-MM-DD
 24  CONVERT(VARCHAR, GETDATE(), 24)  13:14:15  HH:MM:SS
 25  CONVERT(VARCHAR, GETDATE(), 25)  2000-01-02 13:14:15.678  YYYY-MM-DD HH:MM:SS.MS
 100  CONVERT(VARCHAR, GETDATE(), 100)  01 02 2000 1:02PM  MM DD YYYY H:MM
 101  CONVERT(VARCHAR, GETDATE(), 101)  01/02/2000  MM/DD/YYYY
 102  CONVERT(VARCHAR, GETDATE(), 102)  2000.01.02  YYYY.MM.DD
 103  CONVERT(VARCHAR, GETDATE(), 103)  02/01/2000  DD/MM/YYYY
 104  CONVERT(VARCHAR, GETDATE(), 104)  02/01/2000  DD/MM/YYYY
 105  CONVERT(VARCHAR, GETDATE(), 105)  02-01-2000  DD-MM-YYYY
 106  CONVERT(VARCHAR, GETDATE(), 106)  02 01 2000  DD MM YYYY
 107  CONVERT(VARCHAR, GETDATE(), 107)  01 02, 2000  MM DD, YYYY
 108  CONVERT(VARCHAR, GETDATE(), 108)  13:14:15  HH:MM:SS
 109  CONVERT(VARCHAR, GETDATE(), 109)  01 02 2000 1:14:15.678PM  MM DD YYYY H:MM:DD.MS
 110  CONVERT(VARCHAR, GETDATE(), 110)  01-02-2000  MM-DD-YYYY
 111  CONVERT(VARCHAR, GETDATE(), 111)  2000/01/02  YYYY/MM/DD
 112  CONVERT(VARCHAR, GETDATE(), 112)  20000102  YYYYMMDD
 113  CONVERT(VARCHAR, GETDATE(), 113)  02 01 2000 13:14:15.678  DD MM YYYY HH:MM:DD.MS
 114  CONVERT(VARCHAR, GETDATE(), 114)  13:14:15:678  HH:MM:DD:MS
 120  CONVERT(VARCHAR, GETDATE(), 120)  2000-01-02 13:14:15  YYYY-MM-DD HH:MM:SS
 121  CONVERT(VARCHAR, GETDATE(), 121)  2000-01-02 13:14:15.678  YYYY-MM-DD HH:MM:SS.MS
 126  CONVERT(VARCHAR, GETDATE(), 126)  2000-01-02T13:14:15.678  YYYY-MM-DDT HH:MM:SS.MS
 127  CONVERT(VARCHAR, GETDATE(), 127)  2000-01-02T13:14:15.678  YYYY-MM-DDT HH:MM:SS.MS
 131  CONVERT(VARCHAR, GETDATE(), 131)  1/06/1421 1:13:14:678PM  




년 월 일 각각 표기 하기

SELECT DATEPART(yy, getdate()); SELECT DATEPART(mm, getdate()); SELECT DATEPART(dd, getdate());


● DATEADD - 날짜 계산

MS-SQL에서 DATEADD() 함수를 사용하여 날짜를 계산(덧셈, 뺄셈)할 수 있습니다.

DATEADD 사용 구문

DATEADD (DATEPART , NUMBER , DATE )

DATEADD 사용 예시

SELECT DATEADD(YY, -1, GETDATE()) AS '1년전' SELECT DATEADD(YY, 1, GETDATE()) AS '1년후' SELECT DATEADD(MM, -1, GETDATE()) AS '1개월전' SELECT DATEADD(MM, 1, GETDATE()) AS '1개월후' SELECT DATEADD(DAY, -10 , GETDATE()) AS '10일전' SELECT DATEADD(DAY, 10 , GETDATE()) AS '10일후'

실행 결과

2019-09-29 23:21:09.833 2021-09-29 23:21:09.833 2020-08-29 23:21:09.833 2020-10-29 23:21:09.833 2020-09-19 23:21:09.833 2020-10-09 23:21:09.833


+ Recent posts