반응형
반응형

사내에서 Confluence & Jira를 도입했는데, Endpoint는 하나로 두고 싶다는 요청이 있어서, 앞단에 Https기반의 Apache Proxy를 두게 되었고, Apache Proxy를 통해 들어오는 요청이다 보니, 기본 프로토콜이 http로 되어 있는, Confluence, Jira에서는 인증서의 보안이 깨지는 현상이 발생하였다. (https -> http 요청 이슈로 보안이 깨지는 현상)


이런 경우 각 어플리케이션의 con/server.xml을 편집하여, 아래와 같이 proxy정보(proxyName, proxyPort)와 프로토콜(scheme)을 추가해주면 해결이 된다.


...
        <Connector port="8080"
                   maxThreads="150"
                   minSpareThreads="25"
                   connectionTimeout="20000"
                   enableLookups="false"
                   maxHttpHeaderSize="8192"
                   protocol="HTTP/1.1"
                   useBodyEncodingForURI="true"
                   redirectPort="8443"
                   acceptCount="100"
                   disableUploadTimeout="true"
                   proxyName="jira.domain.com"
                   proxyPort="443"
                   scheme="https"
                   bindOnInit="false"/>
...


반응형
,
반응형

습관적으로 python 스크립트를 만들 때 한글 처리 등 귀찮은 일을 겪지 않기 위해, 가장 상단에 아래와 같은 구문을 넣어서 만들었었다.

#-*- coding: utf-8 -*-


그런데, 저것만으로는 format 함수 등 string을 세밀하게 다뤄야하는 로직들에서는 utf-8 인코딩 효과를 보질 못하는 것으로 보여, 아래와 같이 명시적으로 선언해주면, 모든 String 처리 시 UTF-8 인코딩으로 동작하게 된다.

#-*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')


reload 함수 호출이 필요가 없어 보일 수 있는데, 호출 하지 않으면 동작하지 않는다.

반응형
,
반응형

/etc/default/docker 파일을 열어서 아래와 같이 DOCKER_OPTS 항목을 추가해준다.

### /etc/default/docker
# Docker Upstart and SysVinit configuration file

#
# THIS FILE DOES NOT APPLY TO SYSTEMD
#
#   Please see the documentation for "systemd drop-ins":
#   https://docs.docker.com/engine/admin/systemd/
#

# Customize location of Docker binary (especially for development testing).
#DOCKERD="/usr/local/bin/dockerd"

# Use DOCKER_OPTS to modify the daemon startup options.
#DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"

# If you need Docker to use an HTTP proxy, it can also be specified here.
#export http_proxy="http://127.0.0.1:3128/"

# This is also a handy place to tweak where Docker's temporary files go.
#export DOCKER_TMPDIR="/mnt/bigdrive/docker-tmp"
DOCKER_OPTS="-g /data/docker"

docker daemon을 재시작 하면 반영된다.

반응형
,
반응형

패스워드를 강제로 초기화 한 후, 아래와 같은 에러가 발생하며, 아무런 쿼리가 날라가지 않는 경우가 있다.

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.


이런 경우, 아래 명령어로 해결이 가능함.

mysql> set password = PASSWORD('강제로 변경한 패스워드');



반응형
,
반응형

KT에서 그나마 DLNA로 제공해주는 KT 스마트홈 서버라는 게 있는데, 서버를 종료했다가 실행했을 때만 자동으로 폴더 동기화가 되는 바람에, 바로바로 갱신이 안되는 문제가 생겨서, 종료했다가 다시 띄우는 걸 작업스케줄러로 동작하게끔 스크립트를 작성함.

@echo off

taskkill /F /IM LightKTVHS.exe

ping 127.0.0.1 -n 5 > nul

start /D"C:\Program Files\KT 스마트홈 서버\" LightKTVHS.exe



반응형
,
반응형
#!/bin/sh

SRC=/volume1/\@appstore/tvheadend-testing/var
DST=/volume1/backup/tvheadend/`date +%Y%m%d`

mkdir -p $DST

cp -rf $SRC/channel $DST/
cp -rf $SRC/epggrab $DST/
cp -rf $SRC/input $DST/
cp -rf $SRC/dvr $DST/


반응형
,
반응형

Hyperbackup으로 데이터나 특정 어플리케이션 들의 설정 백업은 가능한데,

OS 자체 구성 백업은 수동으로 하고, 복원하는 식으로 밖에 지원을 안하는 것 같아서,

https://forum.synology.com/enu/viewtopic.php?f=7&t=45327 이 링크를 참고하여 스크립트를 만들어보았다.


아래와 같이 만들고, 작업 스케쥴러를 등록해서 하루에 한 번씩만 돌리게 해도 좋을듯.

#!/bin/sh

/usr/syno/bin/synoconfbkp export --filepath=/volume1/backup/dsm/yournas_`date +%Y%m%d`.dss


반응형
,
반응형

DSM 6.1.3 기준에서 작성된 글이며, 네트워크는 아래와 같이 구성되어 있음.


TV 채널 IP추출 및 매핑 (PC - Windows)

  1. omvp를 설치한다.
    • http://ohhara.sarang.net/omvp/bin/
  2. 압축을 풀 때 주의할 점은, 가급적 한글 경로를 포함하지 않는 경로로 해주어야 오동작을 안한다.
  3. setup.bat 을 실행해준다. (관리자 권한 필요)
  4. WinPcap_4_1_3.exe 를 실행해준다. 
  5. 명령프롬프트(cmd)를 관리자 권한으로 실행해준다.
  6. omvp가 설치된 폴더로 이동하여, omvs -l 키워드를 입력하여 본인 PC의 네트워크 디바이스 번호를 찾는다. 
    • dev_idx 괄호 뒤에 있는 숫자이며, 일반적인 PC의 경우 대부분 0임
  7. 이제 사전 준비는 끝났고, 사용중인 iptv의 IP대역을 입력하여, omvp에 포함된 omvs라는 프로그램으로 각 채널에 해당하는 ip목록을 수집해주어야 한다. 
    • IP대역은 여기를 참고하거나, 구글링을 통해 알아내도록 하자. 
  8. IP대역을 알았으면, 명령프롬프트에 아래와 같이 입력해주자.
    • omvs -i 0 -j 5 IP대역/24
    • omvs_out 이라는 폴더에 여러개의 m3u파일(ip정보)과 여러개의 png파일(ip수집 당시 찍힌 스크린샷)이 저장되게 된다.
    • 만약 계속 기다려도, start scanning만 나온다면 PC에서 IPTV로 접속을 하지 못하는 경우이니, 네트워크 구성을 점검해본다.
  9. 이제 omvs_out폴더에 여러개의 m3u파일의 내용을 합쳐서, 한개의 m3u파일로 만들어주어야 한다.
    • m3u파일의 내용을 합쳐서 하나로 만들어준 후, omvp가 설치된 폴더에 omvp.m3u라는 이름으로 변경하여 넣어준 후, omvp.exe 파일을 관리자 권한으로 실행해주면, 실시간으로 채널 확인이 가능하다.
  10. 합쳐진 m3u파일을 쌀집아저씨라는 능력자분께서 만드신 채널 매핑 프로그램(TvHelper)을 이용하여, 채널을 매핑해준다.
    • https://blog.riceworld.info/archives/148 를 참고하여 진행
  11. 매핑된 m3u파일을 Xpenology의 Webstation 등 http를 이용하여 접근 할 수 있는 위치에 둔다.


Tvheadend 설치 (NAS)

  1. [패키지센터] - [설정] 메뉴로 이동한다.
  2. [일반] 탭에서 [신뢰 수준]을 모든 게시자로 변경해준다.
  3. [패키지 소스] 탭에 아래와 같은 소스를 추가해준다.
    • http://syno.dierkse.nl
  4. 패키지센터에서 [Tvheadend-Testing]을 찾아서 설치한다.
  5. 설치하고나면, 9981포트(관리용 WEB포트)와, 9982포트(데이터 전송용)가 올라오게 되는데, 두 포트를 상황에 맞게 열어주어야 한다.


Tvheadend 설정 (NAS)

  1. 기본 설정
    • http://IP:9981 로 접속하여, 인증 후 기본적인 설정을 하여 넘긴다.
    • [설정] - [일반] - [기본] 탭으로 이동하여 아래 설정 진행
      1. [사용자 인터페이스 레벨] - [전문가] 로 변경
    • [설정] - [일반] - [사용자] 탭으로 이동하여 아래 설정 진행
      1. 사용자선택 후 [편집] 버튼 클릭
      2. [스트리밍] 항목에 있는 모든 항목 체크
      3. [비디오녹화기] 항목에 있는 모든 항목 체크
    • [설정] - [채널 / EPG] - [EPG 그래버 모듈]
      1. XMLTV만 활성화하고 모두 비활성화 해준다.
      2. XMLTV의 경로를 기억해둔다. (ex: /volume1/@appstore/tvheadend-testing/var/epggrab/xmltv.sock)

Tvheadend EPG 등록 (NAS)

  1. 사전에 git, python2.x, python module, pip가 설치되어 있어야 한다.
    • Xpenology기준으로 Git Server, Python Module을 설치한다.
    • 터미널에서 easy_install pip를 입력하여 pip를 설치한다.
  2. 이제 EPG모듈을 받아와야 하므로, 터미널에서 아래 키워드를 입력한다.
    • pip install BeautifulSoup4
    • cd epg 등록 모듈을 받을 위치
    • /bin/git clone https://github.com/wonipapa/epg2xml
    • /bin/git pull 
    • /usr/bin/python epg모듈을 받은 위치/epg2xml/epg2xml.py -i 통신사 -s XMLTV경로 
      1. ex: /usr/bin/python /volume1/Video/epg2xml/epg2xml.py -i KT -s /volume1/\@appstore/tvheadend-testing/var/epggrab/xmltv.sock
    • epg모듈은 현재 날짜 기준으로 이틀치만 받아오므로, 위 명령어를 스크립트로 만들어서, 하루 한 번 스케쥴러로 돌리면 된다.

Tvheadend 추가 설정 (NAS)

  1. 아래 설정을 진행한다.
    • [설정] - [DVB입력] - [네트워크]
      1. [추가] 버튼을 누르면, 팝업이 발생한다.
      2. 네트워크 이름을 아무거나 입력
      3. URL에 매핑과정에서 만들어진 m3u파일의 경로를 넣는다. (전에는 내부 볼륨에 넣어도 참조가 됬었는데, 어느순간부터 http프로토콜을 이용행 참조가 가능해짐;)
    • [설정] - [DVB입력] - [먹스]
      1. m3u을 제대로 참조했다면, 내용들이 추가되어 있을거고, m3u파일에 있는 IP들을 스캔하기 시작한다.
      2. 스캔은 됬으나, 서비스가 0으로 나오는 항목들은, [편집]을 눌러서 [TSID에 값으로 0 허용]을 체크하고, [스캔 상태]를 [활성]으로 바꿔주면 서비스가 1로 변하는 경우가 있으니 참고한다.
    • [설정] - [DVB입력] - [서비스]
      1. [서비스매핑] - [모든 서비스 매핑] 선택하면, 먹스에 있던 항목들이 채널로 등록되게 된다.


반응형
,
반응형

테스트 용도로 세팅해서 사용하던 Ubuntu14.04 머신의 Root볼륨이 20G 였는데,

docker 사용을 남발하다보니, /var/lib/docker 아래에 파일 사이즈가 커지게 되어, 50G 정도로 늘릴 일이 생겼다.


대충 개념을 설명하면, 통으로 바꿔버리는 방식이 아니라, 30G 짜리 물리 Disk를 추가하여, 20G짜리에 붙여서 확장하는 개념이다. 

이런 방식이기 때문에, 디스크를 추가하여 OS부팅 후 인식 시켜놓은 이후에는, 커맨드 라인으로 해결 가능하다.


확장 절차는 아래와 같다.


1. 가상머신 종료

$ vagrant halt


2. 기존 Root 볼륨의 디스크 파일을 VDI 포맷으로 복제 후 용량 증설

$ VBoxManage clonehd box-disk1.vmdk box-disk1.vdi –format VDI
$ VBoxManage modifyhd box-disk1.vdi –resize 50000


3. Root 볼륨의 저장소 컨트롤러가 IDE Controller라면, SATA Controller로 바꾸어 준 후, 복제과정에서 나온 VDI 파일을 추가

VirtualBox GUI 기준으로 [머신 설정] - [저장소]


4. IDE Controller 삭제


5. 가상머신 재실행

$ vagrant up


6. 파티션 생성

$ cfdisk /dev/sda

위 명령어를 치면 GUI가 나오는데, (추가한 디스크 용량 - 현재 용량)정도 되는 파티션을 선택 후 [New] - [Primary] - [Write]

Write까지하면 파티션 명 (ex: sda3)이 나오는데, 기억해두고, [Quit]을 눌러서 빠져 나온다.


6. PV (Phisical Volume)생성

$ pvcreate /dev/sda3


7. Root볼륨의 VG(Volume Group) 확인 및 VG 확장

$ vgdisplay
$ vgextend "위 커맨드로 찾은 Root의 VG Name" /dev/sda3


8. Root볼륨의 LV(Logical Volume)확인 및 LV 확장

$ lvdisplay
$ lvextend "위 커맨드로 찾은 Root의 LV Name" /dev/sda3


9. 파일시스템 갱신

$ resize2fs "8번에서 찾은 Root의 LV Name"


반응형
,
반응형

Maven이나 Gradle에서 자체적으로 관리가 가능한 패키징 파일의 version관리를 이용하고 싶지 않은 경우,

최종적으로 결과로 나오는 jar 파일명에 -0.0.1.SNAPSHOT 이 붙는 것이 거슬리는 경우가 있다.


파일명에서 버전정보를 없애는 방법에 대해 알아보겠다.


Maven같은 경우는 pom.xml에 아래와 같이 작성해준다.

<build>
    <finalName>outputJarFileName</finalName>
    ...
</build>


Gradle의 경우는 build.gradle에 아래와 같이 작성하면 된다.

configurations {
    jar.archiveName = 'outputJarFileName.jar'
}


최근에 확인해보니, 지금 사용하는 버전의 sts에서 ggts를 설치하지 않고 plugin 설치만으로 gradle 이용이 가능해졌길래,

gradle도 비슷한 설정이 있지 않을까하고 찾아봤다. 



반응형
,
반응형