하면 된다!!!

인도네시아 신문 읽기 - 사전 검색 도우미

인도네시아/인도네시아어

인도네시아어로된 인도네시아 신문을 읽는 사이트를 만들어봤습니다.


최근 들어서 인도네시아어 공부를 별도로 하지 않으니 실력이 늘지 않아 매일 신문 기사를 한 개씩 봐야겠다 싶어서 시작했는데...

사전 찾는 일이 너무 귀찮아서 기사를 스크랩해서 자동으로 사전을 매칭해주는 서비스를 만들어 봤습니다.


현재는 하루에 Kompas.com과 BBC Indonesia의 2개의 기사를 스크랩하고 있습니다. 매일 아침 7시 전에 자동으로 업데이트 됩니다.

아직 완벽한 상태가 아니라서 베타 테스트 정도로 봐주시면 좋겠습니다.


참고로 인도네시아 신문 기사들을 보다 보니 기자들이 표준어 구사에 문제가 많더군요. 실제로 생활안에서도 표준어를 잘 사용하지 않기 때문에 발생하는 문제로 보이기도 하고... 그런 부분 대문에 사전에서 단어를 찾아내는데 한계가 좀 있습니다.


단어들의 me~, memper~, pe~, ke~, di~, ~an, ~nya 등의 변화 역시 문제가 많았는데 최대한 맞춰보고 있습니다.


아래 URL을 통해서 서비스를 확인하실 수 있습니다.

로그인 없구요, 쿠키 사용도 하지 않습니다.


http://www.appikus.com/news/



사용해보시고 불편한 점들 댓글로 남겨주시면 열심히 기능 업데이트를 해보겠습니다.


# 업데이트 사항 <2018년 10월 20일>

  • 모바일 화면 인터페이스 수정 작업
  • 단어 매칭 문제 수정
    • di~ 관련 문제 수정
    • 3자 단어 매핑 안되는 문제 수정
    • se~nya 관련 처리


root 유저로 ssh 접근 제어 해야할 때

프로그래밍/기타

ssh를 이용해서 외부 접근을 하는 경우에 root 유저로 붙을 수 있게 되면 아무래도 보안상 위험하겠지요.

원격으로 해킹 시도가 상당히 발생할 수 있습니다.


이에 따라서 root 유저는 통상적으로 ssh 접근을 못하도록 하고, 일반 유저로 접근해서 su 또는 sudo를 이용해서 접근하도록 제어합니다.


$ sudo vi /etc/ssh/sshd_config

PermitRootLogin yes    << yes : 접근, no : 접근 안됨


$ sudo systemctl restart sshd  << sshd 서비스 재기동 (centos의 경우)


접속을 시도해보시면... 로그인이 안되도록 변경됩니다.



CentOS - SVN 설치시 에러

프로그래밍/기타

CentOS에 svnserve를 설치하다가...


이 사이트 참고 했음 : http://b1ix.net/290


설명이 매우 잘 되어있어서 따라하면 땡...


다만 중간 부분에 나와있는 이 부분!!!


[root@localhost checkout1]# svn checkout svn://localhost/svn_repos svn: E000013: Unable to connect to a repository at URL 'svn://localhost/svn_repos' svn: E000013: file '/home/svn/svn_repos/format' 를 열 수 없습니다: 허가 거부


이에 대한 해결책이 필요했다.

위의 에러는 selinux가 보안상 막고 있어서 발생하는 것이 맞다.


이를 해결 하기 위해서는... repository 타깃이 되는 폴더명을 뒤에 써준다.


$ chcon -R -t svnserve_content_t /home/svn/svn_repos


이렇게 해주면 된다.

selinux를 그냥 disabled 시켜 버리면 보안에 구멍이~!!!


Linux 프로세스 관리 쉘

프로그래밍/기타

###################################


1. 특정 프로세스를 찾아서 죽이기


#!/bin/bash

ps -ef | grep -v grep | grep 프로세스명 | awk '{print $2}' | xargs --no-run-if-empty kill -9 $1



###################################


2. 특정 프로세스가 살아있는지 체크해서 죽어있으면 살리는 쉘


$ vi /var/test/run.sh


#!/bin/bash

PROCESS_CNT=`ps -ef | grep 프로세스명 | grep -v grep | awk '{print $2}' | wc -l`

if [ "$PROCESS_CNT" == 0 ];

then

    echo "[`/bin/date +\%Y\%m\%d_\%H\%M\%S`] Process : Dead!!"

    실행시킬_프로세스명

else

    echo "[`/bin/date +\%Y\%m\%d_\%H\%M\%S`] Process : Alive!!"

    exit 0

fi


위와 같은 쉘을 하나 만들어두고 crontab 에 1분에 한번씩 돌게 해주면 1분에 1회씩 프로세스가 살아있는지 체크하고 죽어있으면 실행 시키도록 할 수 있다.


$ crontab -e

* * * * * /var/test/run.sh >> /var/test/proc_mon.log


$ tail -f /var/test/proc_mon.log

1분에 1회씩 로그가 쌓이는 것을 확인할 수 있습니다.



Raspberry PI로 SSH 접속시 느릴때 해결방법

마이 스토리/Raspberry PI 놀이

Raspberry PI 설정을 다 했다고 좋아서 외부에서 접근할 때... SSH 접속이 유난히 느려서 초기 접속 프롬프트를 기다리는데까지 짜증이 나는 경우들이 있습니다.


이럴 때는 sshd 설정을 변경해주셔야 하는데요.


아주 간단합니다.


$ sudo vi /etc/ssh/sshd_config


#UseDNS no << 요걸 찾으셔서 앞에 주석 #만 제거 해주세요.


$ sudo service ssh restart


해주시면 끝~

Raspberry PI LX윈도우의 시작 프로그램 관리하기

마이 스토리/Raspberry PI 놀이

라즈베리 파이를 이용해서 키오스크(Kiosk)를 구성하는 방법에 대해서 고민을 해봤습니다.

라즈베리 파이가 부팅이 되고 자동으로 전체 화면모드의 웹 브라우저가 떠서 해당 액션만 할 수 있도록 만들면... 용도가 참 많겠지요?


우선 크롬 브라우저의 위치를 찾아봤습니다.

/usr/lib/chromium-browser/chromium-browser

요기 있었군요.


크롬 브라우저 실행을 다음과 같이 터미널에서 시켜봅니다.

chromium-browser --incognito --kiosk http://blog.hometown.co.kr


전체 창으로 웹 브라우저가 떡~ 뜨게 됩니다.

해당 창을 닫고 싶어도 단축키를 모르면 닫을 수가 없답니다. (단축키 : Ctrl + Shift + Q)

자 그러면 저 커맨드를 LX윈도우가 부팅된 후에 실행이 되어지면 브라우저가 딱 뜨겠지요?


LX윈도우의 시작프로그램 등록은 어디서 할지 한번 알아보겠습니다.

$ sudo vi /home/pi/.config/lxsession/LXDE-pi/autostart


해당 파일의 맨 하단에 다음과 같이 추가합니다.

@chromium-browser --incognito --kiosk http://blog.hometown.co.kr


맨뒤의 URL은 실제로 오픈하실 URL을 넣으시면 됩니다.

위와 같이 하신 후 라즈베리파이를 재부팅 하게 되면 웹 브라우저가 전체모드로 열리면서 해당 웹 사이트가 오픈되게 됩니다.


###########


사족으로 ...

그러면 매번 시작 프로그램을 변경할 때마다 저 파일을 찾아서 수정해야하는데... 좀 불편할 수 있겠지요.

그래서 저는 별도의 shell 을 하나 만들었습니다.


/home/pi/startup.sh


이 파일 안에다가 아래와 같이 추가했습니다.

/usr/lib/chromium-browser/chromium-browser --incognito --kiosk http://blog.hometown.co.kr


그리고 autostart 파일에는 /home/pi/startup.sh을 추가했습니다.


결과는 원하는 대로 짜라란~



Raspberry PI 한글 폰트 설치

마이 스토리/Raspberry PI 놀이

초기에 라즈베리파이를 설치하고 나면 화면에서 한글이 깨지는 현상이 있습니다.

이런 경우에는 한글 폰트를 설치해주시면 되는데요.


터미널 창을 오픈하시고...


$ sudo apt-get install fonts-unfonts-core -y

$ reboot


리부팅 되고 나면 한글이 잘 보이실꺼에요.

크로미움 웹 브라우저로 웹사이트를 오프하셔도 한글 잘 보이실꺼구요.


Raspberry Pi 화면 해상도가 안맞을 때...

마이 스토리/Raspberry PI 놀이

라즈베리파이를 사용하는데 화면 사이즈가 정확히 맞지 않는 경우들이 있다.


이럴 때는 터미널을 오픈한 후에...


$ sudo raspi-config


이렇게 하면 파랑색 설정 창이 열리는데 여리것 Advanced Options > Overscan과 Resolution 을 확인해서 본인 환경에 맞춰주시면 됩니다.


SSH 접속 세션 시간 조정

프로그래밍/기타

SSH 접속이 자주 끊겨서 고생하는 경우들이 있는데... 그에 대한 해결책을 간단히 노트해둔다.

  1. SSH 클라이언트 접속 시간 조정
    • sudo vi /etc/ssh/ssh_config
    • # otehr configs 부분에 아래 내용을 주석 해제하고 숫자값을 정해준다.
      ServerAliveInterval 100

  2.  SSHD 서버에서의 접속 시간 조정
    • sudo vi /etc/ssh/sshd_config
    • 아래와 같이 주석 해제하고 값을 지정해주시면 됩니다.
      ClientAliveInterval 600
      TCPKeepAlive yes
      ClientAliveCountMax 10
    • SSHD 서버 재기동이 필요합니다.
      $ sudo service ssh restart


Jenkins 포스트 쉘 스크립트 권한 관련 문제

프로그래밍/Java

리눅스 장비에 jenkins 를 설치하고나서 배포를 하다가 포스트 쉘 스크립트를 넣었다가 권한 문제로 에러를 여러차례 겪었는데...


jenkins는 jenkins 유저를 사용하고 있기 때문에 사용하려는 쉘에 접근하기 위해서는 권한이 필요했다.


이를 해결하기 위해서 jenkins 유저에 sudo 권한을 주고 포스트 쉘 쪽에는 sudo /path/to/abcd.sh 이렇게 처리를 해보는 것으로...


우선 sudoers에 유저와 권한을 넣어줘야 한다.


$ vi /etc/sudoers

# User_Alias ADMINS = jsmith, mikem << 요런 라인이 있는데 이 라인 아래에다가...


jenkins ALL=(ALL) NOPASSWD: ALL


이렇게 추가해준다.

NOPASSWD 라고 해주면 sudo 명령을 내리더라도 비번을 별도로 묻지 않게 됩니다.


물론 이렇게 셋팅을 하게 되면 sudo 커맨드를 이용해서 루트 권한으로 모든 커맨드를 실행할 수 있으니 문제가 있을 수 있다.

권한을 축소하려면 특정 경로나 파일을 지정해서 열어주는 것도 방법이다.


맨 뒤에 있는 ALL 을 대신해서 경로나 파일을 지정해주면 된다.


jenkins ALL=(ALL) NOPASSWD: /root/deployshell/


이런 식으로 해두게 되면 /root/deployshell/ 디렉토리 하단에 대한 권한을 지정해줄 수도 있다.


나이먹고 이런 삽질은 참 쉽지 않다. ㅠㅠ 어릴때 공부해뒀어야 하는데... 하는 생각뿐이다.