반응형

GIT SVN 을 이해하려면 먼저 형상관리(버전관리)에 대해 이해해야 한다.

 

프로젝트를 진행할 때 각자 업무를 나눠서 맡은 부분을 개발을 하게 되는데,

각자가 개발한 코드 혹은 문서들을 하나의 관리 도구에서 통합적으로, 버전별로 관리하게 되는 것을

형상관리(Configuration Management) 혹은 버전관리(Version Management)라고 부른다.

형상관리, 버전관리, 변경관리 등 용어는 다양하지만

실무에서 사용하는 의미는 거의 비슷하기 때문에 구분하지 않고 사용하는 경우가 많다.

 

형상관리 방식에는 크게 중앙집중식과 분산관리식 으로 나뉘는데

대표적으로 사용되는 도구가

중앙집중관리식의 SVN 그리고 분산관리식의 GIT 이다.

SVN 은 내 로컬PC 에서 Commit을 하면 바로 중앙저장소에 반영이 되는 반면

GIT 은 내 로컬PC에서 Commit을 하면 로컬 저장소에 반영이 되고 로컬저장소에서 Push를 하면

원격저장소에 반영이 된다.

 

SVN의 최대의 장점은 직관적이다.

모든 사람이 중앙서버에 있는 같은 자료를 받아오고

내가 Commit을 하는 순간 모든 사람에게 공유가 된다.

이러한 방식의 단점은 만약 두 사람이 하나의 파일을 동시에 수정하고 커밋하였을 때

충돌이 일어날 확률이 높다는 얘기이다.

 

반면 GIT은 직관적이지 못하고 적응하는데에 시간이 필요하다.

내가 한 작업물을 원격저장소에 올리려면

우선 로컬PC 에서 작업내용을 Commit 하여 로컬 저장소에 반영한 후,

원격저장소에서 fetch로 로컬저장소로 마스터 파일을 받아와서

충돌이 나지 않게 merge를 이용하여 합친 다음,

로컬 저장소의 내용을 Push 하여 원격저장소에 올리면 그때 다른 사람들에게 나의 작업 내용이 공유가 된다.

 

그러나 GIT 의 장점은

모든 작업이 로컬에서 이루어지고 네트워크 사용은 원격 저장소로 저장할 때 한 번 이루어지므로

개발 시 처리속도가 빠르고,

웹 상에 저장소를 둘 수 있기 때문에

언제 어디서나 협업을 할 수 있고(이건 단점일수도…),

여러 사람이 가지가 뻗어나가듯 자신의 작업을 하기 때문에 이를 브랜치 라고 하는데,

브랜치와 머지의 상호작용을 잘 할 수 있도록 편의성을 잘 제공해주기 때문에 협업이 더욱더 용이해진다.

그리고 원격저장소의 내용이 모든 협업자들의 로컬 저장소에 저장이 되어 있으므로

중앙저장소에 에러가 생기면 모든 작업이 마비되는 SVN 과 다르게

원격저장소에 에러가 생겨도 로컬에서 복구하기 용이하고,

히스토리 관리가 잘 제공되어 있어 히스토리 관리가 용이하다.

 

 

 

 

 출처 :

https://rojhw.tistory.com/27?category=618906

https://www.slideshare.net/justinyoo/git-from-svn

https://www.slideshare.net/einsub/svn-git-17386752

http://blog.naver.com/PostView.nhn?blogId=special9486&logNo=220197084141&categoryNo=0&parentCategoryNo=17&viewDate=¤tPage=1&postListTopCurrentPage=1&from=postView

반응형
반응형

MYSQL 에서 GROUP_CONCAT 함수를 사용시

#HY000Row 4611 was cut by GROUP_CONCAT() 

같은 에러가 날 경우가 있습니다. 

 

이때에는

https://stackoverflow.com/questions/7208773/mysql-row-30153-was-cut-by-group-concat-error

 

MySQL "Row 30153 was cut by GROUP_CONCAT()" error

I have a function listed below. When I call it with the LIMIT set at 0,60 as seen below, it works fine. However, whenever I increase that LIMIT to 70 or higher, or even remove the LIMIT, MySQL errors

stackoverflow.com

이 에러는 그룹콘캣 사용시 CONCAT 되는 문자열이 너무 길 경우 발생하는 에러인데요

위의 링크된 글을 참조하여

 

SET group_concat_max_len=150000;

 

의 명령어로 group concat의 max length 를 늘려주어

해결할 수 있습니다.

반응형
반응형

INSERT INTO TB_NAME(COL_NAME1, COL_NAME2, … , LAST_COL_NAME) 

VALUES('어쩌고''저쩌고''이러쿵'); -- INT 타입 데이터는 따옴표 안붙여도 됨

 

UPDATE TB_NAME SET COL_NAME='저러쿵'--모든 행 바꾸기

UPDATE TB_NAME SET COL_NAME='저러쿵' WHERE COL_NAME1=5-- ㅡ특정행 바꾸기

 

DELETE FROM TAB_NAME; -- 전체 삭제

DELETE FROM TAB_NAME WHERE COL_NAME='ABCD'-- 특정행 삭제

 

SELECT * FROM TB_NAME --테이블의 모든 데이터 조회

SELECT COL_NAME1, COL_NAME2 FROM TB_NAME WHERE COL_NAME1='1234'; -- 테이블의 특정 컬럼을 특정 데이터만 조회

반응형
반응형

1.    좌표계와 타원체 정의

 

측지좌표계를 만들기 위해선 지구의 형상을 알아야 함. 즉 타원체가 필요. Bessel, Clark, hayford 등등 여러 학자들이 천문 측량을 통해 지구의 형상을 측정해 타원체를 규명 => 이러한 타원체들을 기준으로 지구상의 위치를 수치화한 것이 측지좌표계 (측지계와 좌표계는 약간의 의미 차이만 있을 뿐 거의 동일)

 

측지좌표계 : WGS84, UTM, TM

지구타원체 : GRS80, BESSEL

 

2.    GIS 좌표계의 종류

 

2-1 지역측지계

세계 측지계가 도입되기 전까지 지역별 측지계를 사용. 대표적으로 일본에서 Bessel 타원체가 일본의 지형과 가장 유사하다고 판단하여 동경측지좌표계를 제작. (동경좌표계를 제작할 때 쓰이는 Bessel 타원체의 투영법이 TM 도법이어서 TM 좌표계라고도 부름)

 

2-2 세계측지계

GPS 위성 24 대를 이용해 전 세계에 적용하기에 적합한 타원체를 확보하였고, 이것이 바로 GRS80 타원체. 그리고 지구의 중심의 위치를 결정하기 위하여 199711000초에 천체를 기준으로 지구의 중심의 위치를 기준으로 하는 XYZ 3차원 좌표 체계를 결정하고 이를 “ITRF 97” 이라고 명명

ITRF => International Earth Rotation and Reference System Service(오타 수정)

ITRF => International Terrestrial Reference Frame

따라서 전 세계적으로 GRS80 타원체에 ITRF 97 (현재는 ITRF 2000 ) 체계를 결합하여 위치를 결정하고, 이를 세계측지계로 사용. (우리나라에서도 최근까지 동경측지계를 사용하다가 현재 세계측지계로 바꿈)

2-3 WGS84 ITRF 2000 계의 차이

WGS84 타원체는 GRS80 타원체 정의 전 미국에서 GPS 위성의 궤도 운용을 위한 타원체였음, 이는 GRS80 타원체와 수치적으로 거의 차이가 없는 동일한 타원체임. 하지만 WGS84 계에 있어서 지구의 중심의 위치에 대해 미국에서 명확한 좌표를 제공하지 않고있고, 학자들의 연구에 의해 몇십년 전에는 WGS84계의 중심과 ITRF 계의 중심의 차이가 10미터 가량 발생한다는 학설이 있었고, 현재는 그 차이가 현저히 줄어들어 지구의 중심이 거의 동일하기 때문에 WGS84타원체와 WGS84 좌표계의 조합과 GRS80 타원체와 ITRF 2000 좌표계의 조합이 거의 동일하다고 판단되고 있음. WGS84 타원체의 경우 UTM 도법을 사용하여 투영하기 때문에 UTM 이라고도 부름

하지만 군사목적으로 발사된 GPS 위성의 운용이 미국의 권한이고, 지구 중심에 대한 명확한 좌표를 제공하지 않고 있으므로, 세계 측지계에는  GRS80 – ITRF2000 계를 활용함 하지만 해양, 항공 등에 있어서는 미국의 영향으로 인해 여전히 WGS84를 많이 활용.

 

 

 

출처

https://m.blog.naver.com/PostView.nhn?blogId=rparadise&logNo=80151886039&proxyReferer=https%3A%2F%2Fwww.google.com%2F

 

측지계

* 아래 내용은 [건설기술자 전문교육] 측지학 과목의 국토지리정보원 안기석 사무관님 교육을 토대로 작성...

blog.naver.com

http://www.biz-gis.com/index.php?mid=pds&document_srl=65754

 

좌표계 관련 설명 - 자료실 - 주식회사 비즈GIS (BIZ-GIS Inc.)

좌표계 관련해서 정리가 잘된 자료들, 네이버 백과사전 등등 참고하여 정리해 봤습니다.(참고한 자료를 그대로 인용한 부분도 많습니다.) 최근 좌표계에 흥미가 생겨 공부하는 샘 치고 정리한 자료여서 잘못된 부분이 있을 수 있습니다. 알려 주시면 수정하도록 하겠습니다.   1. 지오이드와 타원체   지도제작을 하기 위해서는 지구를 일정한 기준 하에 두어야 한다. 하지만 지구는 완전한 구(球)가 아니라 적도반지름이 ...

www.biz-gis.com

 

반응형
반응형

CREATE 

1
2
3
4
5
6
7
8
CREATE TABLE TB_NAME(
    COL_NAME1 VARCHAR(10NOT NULL PRIMARY KEY,
    COL_2NAME INT NOT NULL  AUTO_INCREMENT UNIQUE,
    COL_NAME3 CHAR(10DEFAULT NULL,
    COL_NAME4 VARCHAR(5DEFAULT 'Y',
    CONSTRAINT test_check CHECK(COL_NAME4 BETWEEN 'Y' AND 'N'),
    PRIMARY KEY (COL_2NAME)
);

 

ALTER

1
2
3
4
5
6
7
8
9
ALTER TABLE TB_NAME ADD COL_NAME5 INT;
ALTER TABLE TB_NAME DROP COLUMN COL_NAME3;
ALTER TABLE TB_NAME MODIFY COL_NAME4 VARCHAR(3DEFAULT 'N';
ALTER TABLE TB_NAME RENAME COLUMN COL_2NAME TO COL_NAME2;
ALTER TABLE TB_NAME ADD CONSTRAINT CONST_NAME1 PRIMARY KEY(COL_NAME4);
ALTER TABLE TB_NAME ADD CONSTRAINT CONST_NAME2 FOREIGN KEY(COL_NAME5) REFERENCES TB_NAME2(COL_NAME5);
ALTER TABLE TB_NAME ADD CONSTRAINT CONST_NAME3 CHECK (COL_NAME5 > 1);
ALTER TABLE TB_NAME ADD CONSTRAINT CONST_NAME4 CHECK (COL_NAME4 IN ('F','M'));
ALTER TABLE TB_NAME DROP CONSTRAINT CONST_NAME3;
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter

 

DROP, RENAME, TRUNCATE

1
2
3
4
5
RENAME TB_NAME TO TB_NEW_NAME;  -- 오라클
RENAME TABLE TB_NAME TO TB_NEW_NAME;  -- MYSQL
TRUNCATE TABLE TB_NEW_NAME;
DROP TABLE TB_NEW_NAME;
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
반응형
반응형

얼마전 정말 강력한 에디터 프로그램을 알게 되었습니다.

바로 MS 에서 만든

 

비주얼 스튜디오 코드

Visual Studio Code

 

라는 에디터 프로그램 입니다.

 

이 프로그램이 왜 좋은 프로그램인지

차차 설명드릴테니

우선 저를 따라 설치를 먼저 하시기 바랍니다.

 

 

우선

https://code.visualstudio.com/

불러오는 중입니다...

홈페이지에 접속 하신 뒤

Download for Window

초록색 버튼을 누릅니다.

 

 

그러면 위와같은 페이지가 뜨면서

자동으로 설치파일이 받아지는데

혹시 자동으로 받아지지 않는 분들은

direct download link.

파란색 글씨를 눌러 다운받으시기 바랍니다.

 

 

파일을 다운받은 후 설치파일을 실행시키면

위와같은 메시지가 뜨는게 그냥 확인을 눌러줍니다.

 

 

그러면 이렇게 흔한 설치파일이 실행되고

 

 

계약에 동의함(A) 에 체크 후 다음>

 

 

설치할 경로를 지정 후 다음>

 

 

시작메뉴에 추가할 폴더를 선택 후 다음>

 

 

여기에서 선택사항이 있는데

본인이 원하는대로 선택항목에 체크하신 다음>

 

 

정말 간단하게 설치를 눌러주시면

 

 

설치가 완료가 됩니다.

 

 

자 이제부터 왜 이 파일이 강력한 툴인지 설명드리겠습니다.

왼쪽 위의 Start 탭에서 New file 을 하여 파일을 생성하셔도 되고

Open folder.. 를 선택하여

문서들을 관리할 폴더를 하나 선택하신 후 진행하셔도 됩니다.

 

 

저는 Open folder 를 선택하여

이 블로그를 작성하기 위해 캡쳐해 두었던 사진을 모아놓은 폴더를 선택하였습니다.

참고로 저런 이미지 파일들도 무리없이 열립니다.

우선 간단한 테스트를 위해 위에 보이시는 빨간 네모부분을 클릭하여

폴더안에 새 파일을 실행시켜 줍니다.

 

 

임의로 새 파일의 이름을 ~.sql 로 작성하였습니다.

그랬더니 오른쪽 아래에 보이시는 것 처럼

mssql 에 대한 extension 을 설치할 것인지를 묻습니다.

망설임 없이 Install 을 눌러주면

 

 

위와같은 설치가 진행이 되면서

 

 

이렇게 sql 에 대한 Extenstion 이 자동으로 설치가 되었습니다.

 

 

임의로 아무 sql 명령문을 작성하여 보았습니다.

그랬더니 해당 툴에서 문법적으로 오류가 난 부분을 인식하여

에러를 잡아줍니다.

 

 

이번에는 새 파일을 생성하여 ~.c 라는 이름으로 저장을 했더니

마찬가지로 오른쪽 아래에 C/C++ 에 대한 Extentsion 을 설치할 것인지를 묻습니다.

 

 

설치를 하고

(참고로 저 왼쪽 위의 종이가 두장 겹쳐진 모양의 버튼을 누르시면

폴더 및 파일 관리 탭으로 전환됩니다.)

 

 

이렇게 간단하게 C에 대한 문장을 작성을 해도

프로그램이 알아서 인식을 하고 오류를 잡아줍니다.

 

 

자바도 마찬가지입니다.

 

 

설명할 필요도 없겠지만

텍스트 파일도 당연히 지원이 됩니다.

 

 

이렇게 갖가지 형식의 파일을 자동으로 인식해서 해당 Extension 을 설치 후

알아서 문법적인 오류들도 잡아주고

급할때는 임시적인 개발 툴 처럼도 사용이 가능하며

 

문서들을 한데 모아 관리하기도 아주 편하게 되어있어서

개발자들에게는 아주 유용한 프로그램이 될 것 같습니다.

 

비쥬얼 스튜디오 코드!

 

강추 드립니다!

 

참고로 어떤 Extension 이 있는지 보고싶으시다면

https://code.visualstudio.com/docs?start=true

 

Documentation for Visual Studio Code

Find out how to set-up and get the most from Visual Studio Code. Optimized for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

이곳에서 확인하시면 됩니다.

 

 

 

 

 

반응형
반응형

MYSQL 에서

중복되는 항목이 있는지 찾고싶을 때

1
2
3
4
5
SELECT  COLUMN_NAME ,  -- 중복되는 데이터
         COUNT(COLUMN_NAME) -- 중복 갯수
FROM TABLE_NAME              -- 중복조사를 할 테이블 이름
GROUP BY COLUMN_NAME      -- 중복되는 항목 조사를 할 컬럼
HAVING COUNT(COLUMN_NAME) > 1 ;  -- 1개 이상 (갯수)

위와같은 쿼리로 하시면 됩니다.

반응형
반응형

MYSQL 작업시 테이블에는 없는 순번을 매기는 방법입니다.


  

1
2
3
4
5
6
7
8
9
10
/*변수 선언을 위에 해주는 방식*/
SET @rownum:=0;
 
SELECT
    @rownum:=@rownum + 1 as rNum,
    t1.*
FROM
    TABLE_NAME t1
;
 
cs

혹은

1
2
3
4
5
6
7
8
9
/*변수 선언을 내부에 해주는 방식*/
SELECT
    @rownum:=@rownum + 1 as rNum,
    t1.*
FROM
    TABLE_NAME t1,
    (SELECT @rownum:=0) t2
;
 
cs

그냥 아무런 조건 없이 순번을 주실 때는 이렇게 해주시면 됩니다.







만약 그룹별로 순번을 다르게 매기고 싶으시다면

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* 변수 선언을 위에 해주는 방식*/
/* 만약 조건이 문자열이라면 */ /* 만약 조건이 숫자라면 */
    /* SET @val:=''; */         /* SET @val:=0;  */
/* 위에것 둘 중 하나만 써주시면 됩니다. */
/* 만약 그룹지을 조건이 VAL1 이라면 */
 
SET @rownum:=0;
 
SELECT MAIN.*
FROM (
    SELECT 
    (CASE @val WHEN t1.VAL1 THEN @rownum:=@rownum+1 
    ELSE @rownum:=1 END) as rNum,
    (@val:=t1.VAL1) temp,
    t1.*
   FROM TABLE_NAME t1 
   ORDER BY t1.VAL                  
) MAIN;
 
cs

이렇게 해주시거나

혹은


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* 변수 선언을 내부에 해주는 방식*/
/* 만약 그룹지을 조건이 VAL1 이라면 */
 
SELECT MAIN.*
FROM (
    SELECT 
    (CASE @val WHEN t1.VAL1 THEN @rownum:=@rownum+1 
    ELSE @rownum:=1 END) as rNum,
    (@val:=t1.VAL1) temp,
    t1.*
   FROM TABLE_NAME t1,
        (SELECT @val:='', @rownum:=0) SUB
   ORDER BY t1.VAL                  
) MAIN;
 
cs



이렇게 순번을 매기시면 됩니다.

반응형

+ Recent posts