1. 데이터타입: geography

2. 저장: 

INSERT INTO [테이블명] ([geography컬럼명]) values (geography::Point([위도], [경도], 4326));
-- 4326은 우리가 흔히 사용하는 좌표 CRS임

3. 문자열로 변환 조회
단, 이 경우 "POINT ([경도] [위도])" 형태로 반환되므로, 각각 decimal type의 컬럼으로 저장하는 편이 나았음 (다른 방법이 있을 수 있음)

SELECT convert(nvarchar(50), [geography컬럼명]) as [별칭] FROM [테이블명];
-- POINT ([경도] [위도])

4. 특정 위치를 기준으로 반경 5km 조회하기 - geography 타입을 사용한 이유

-- STDistance는 차이를 미터로 반환함

-- 1. 변수선언이 가능한 경우
DECLARE @Origin GEOGRAPHY
SET @Origin = GEOGRAPHY::Point([위도], [경도])
SELECT * FROM [테이블명] WHERE @Origin.STDistance([geography컬럼명]) <= (5 * 1000);

-- 2. DB에서 바로 조회할 경우.
SELECT * FROM [테이블명] WHERE (SELECT [geography컬럼명] FROM [테이블명] WHERE [관리키컬럼명]=[관리키]).STDistance([geography컬럼명]) <= (5 * 1000);

 

'DB > MSSQL' 카테고리의 다른 글

트리거 소스보기  (0) 2016.10.31
초간단 트리거 문법  (0) 2016.08.24
테이블 명세서 쿼리문  (0) 2014.09.23
0을 나누기 에러 대신 null 반환되도록 하기  (0) 2014.09.19
숫자 앞에 0으로 채우기  (0) 2014.09.04

작년 초에 했었는데 1년 6개월만에 완벽하게 잊어버린 관계로 앞으로 이 사태를 막기 위해 기록으로 남겨둔다. cmd 로 발급하는 방법도 있지만 옵션이 뭐가 복잡하고 어쩌고 해서 알못도 이 방법은 쉽게 가능하니까

 

1. 아무 경로에나 폴더 생성

2. cmd 에서 npm init -y

3. npm i mkcert@1.5.1 (오늘자 기준으로 최근 버전인 3.2는 인증기관 인증서를 설치할때 에러가 발생하기 때문에 과거에 잘 됐던 버전으로 특정함)

4. common js 문법을 쓸거기 때문에 js 파일 하나 생성. main.js로 명명하겠음

5. 코드 작성

const mkcert = require('mkcert')
const fs = require('fs')

// 인증 기관 생성
mkcert
   .createCA({
      organization: '가상의 인증기관이름',
      countryCode: 'KR',
      state: 'SEOUL',
      locality: 'SEOUL',
      validityDays: 365, // 1년
   })
   .then((ca) => {
      fs.writeFileSync('./certs/ca.key', ca.key)
      fs.writeFileSync('./certs/ca.crt', ca.cert)

      // 그런 다음 TLS 인증서를 생성
      mkcert
         .createCert({
            domains: ['127.0.0.1', 'localhost'],
            validityDays: 365,
            caKey: ca.key,
            caCert: ca.cert,
         })
         .then((cert) => {
            fs.writeFileSync('./certs/cert.key', cert.key)
            fs.writeFileSync('./certs/cert.crt', cert.cert)
         })
   })

6. cmd에서 node ./main.js 실행

7. 인증기관 인증서 설치 진행

여기서부터 중요함. 인증기관 인증서 부터 설치를 해야함. 인증기관을 신뢰할 수 있어야 tls 인증서가 문제없다고 판단하여 설치할 수 있기 때문임. ca.crt 실행

 

8. 끝

 

기타정보

1. pem 파일은 crt 파일과 동일하기 때문에 확장자만 바꾸면 된다.

2. fullchain.pem 파일이 필요하다면 ca.crt, cert.crt 파일을 합치면 된다.

3. localhost를 https로 쓰다보면 http로 들어가고 싶어도 웹브라우저가 자동 리다이렉트를 해버려서 불편할 수 있는데 그때는 크롬 기준으로 chrome://net-internals/#hsts 로 접속하여 가장 하단인

여기에 localhost 를 넣어서 삭제하면 된다.

 

그럼 진짜 끝

'Server > 기타' 카테고리의 다른 글

리눅스 폴더별 압축  (0) 2022.06.22
쉘스크립트 - 파일을 폴더 생성 후 이동  (0) 2022.06.22

your system software has rejected this edit

이 오류 메시지가 뜨는 경우 번거로워도 불필요한 프로그램 설치없이 설정하려면 다음과 같은 방법으로 해야 한다.

1. 개발자 옵션을 활성화 한다.
설정 > 휴대전화 정보 > 소프트웨어 정보 > 빌드번호 항목을 연속하여 터치(클릭)하여 개발자 옵션을 활성화 한다.

2. usb 디버깅 모드를 활성화환다.
설정 > 개발자 옵션 > USB 디버깅을 허용으로 설정한다.

3. PC에 Google에서 제공하는 platform-tools를 다운로드 받아 압축을 해제한다. 한글 경로가 없도록 c:나 d: 등의 root에 압축을 해제하는 편이 편리한다.
다운로드: https://developer.android.com/studio/releases/platform-tools?hl=ko

4. 파워쉘이나 cmd를 실행하여 해당 경로로 이동하거나 해당 경로에서 오픈한다. (탐색기에서 shift + 우클릭하여 실행하거나 상단 경로에 cmd 입력 후 엔터 등)

5. 휴대폰을 PC와 연결한다. 충전케이블 말고 반드시 데이터케이블을 이용해야 한다.

6. cmd창에서

adb devices

 

7. 휴대폰 화면에 뜨는 USB 디버깅 확인 메시지에서 허용한다.

8. SetEdit에서 했던 설정을 여기서 입력한다.

adb shell settings put system csc_pref_camera_forced_shuttersound_key 0

 

9. 기본카메라에서 무음으로 사진이 잘 찍히는지 확인한다.

 

원인

이 스킨에는 단축키 적용이 되어 있었다.

w: /admin/entry/post/
e: /admin/skin/edit/
r: /admin/plugin/refererUrlLog/
h: /

그리고 해당키는 input과 textarea 태그를 제외한 곳에서 입력한 경우 발동되도록 액션이 걸려있다.

문제는 이 스킨의 댓글창은 div태그에 ContentEditable속성을 적용하여 만들어졌던 것이었다.

 

해결

스킨 html 편집을 하고 상단의 스크립트에서 getKey 함수의 if문의 조건을 다음과 같은 방식으로 변경한다.

<script>
    //추가 단축키
    var key = new Array();
    key['w'] = "/admin/entry/post/";
    key['e'] = "/admin/skin/edit/";
    key['r'] = "/admin/plugin/refererUrlLog/";
    key['h'] = "/";

    function getKey(keyStroke) {
      if (((event.srcElement.tagName === 'INPUT') || (event.srcElement.tagName === 'TEXTAREA') || (event.srcElement.tagName === 'DIV' && event.srcElement.isContentEditable))===false) {
        isNetscape = (document.layers);
        eventChooser = (isNetscape) ? keyStroke.which : event.keyCode;
        which = String.fromCharCode(eventChooser).toLowerCase();
        for (var i in key)
          if (which == i) window.location = key[i];
      }
    }
    document.onkeypress = getKey;
  </script>

 

'오류노트' 카테고리의 다른 글

IE 엑셀 다운로드 파일 바로열기 에러  (0) 2015.08.17

라든가 error msg=“Unable to gather” 등등

influxdb2에서 발생하는 에러인데

 

원인

나의 경우에는 보안인증서 적용후에 발생했는데 privkey.pem파일을 실행할 수 있는 권한이 없어서 발생한 문제였다.

 

해결

letsencrypt를 기준으로 해당 경로와 파일에 influxdb권한그룹과 계정이 권한을 가질 수 있도록 명령어를 작성하여 해결하였다.

centos기준

기존 파일에 읽기 권한을 부여함

setfacl -m d:user:influxdb:r /etc/letsencrypt/archive/[도메인]/privekey.pem

 

아래의 명령어로 미래에 생성될 파일에도 읽기 권한을 부여함

setfacl -m d:user:influxdb:r /etc/letsencrypt/archive/[도메인]

 

+ Recent posts