본문 바로가기

분류 전체보기667

728x90
반응형
통행료 자동 지불 시스템 '하이패스(Hi-Pass)' 개요와 통신방식 하이패스 정의 하이패스(Hi-Pass)는 통행료 자동 지불 시스템인 ETCS(Electronic Toll Collection System)의 서비스 명칭이다. 우리나라의 하이패스는 한국도로공사가 1996년 8월부터 추진해온 사업이며 2000년 6월 30일부터 지금까지 운영되고 있다[1]. 하이패스 통신방식 한국도로공사의 경우 능동형(Active) DSRC(Dedicated Short Range Communication) 하이패스 시스템을 운용하고 있으며 DSRC 주파수 대역은 IR(Infrared Ray, 적외선)과 RF(Radio Frequency, 전파) 모두 지원하고 있다[2]. IR을 사용하는 DSRC를 IR-DSRC라고 부르며 RF를 사용하는 DSRC를 RF-DSRC라고 부른다. IR-DSRC는.. 2022. 6. 25.
[CentOS] 아파치 톰캣(Apache Tomcat) 9.0 추가 설치 방법 한 컴퓨터에 여러개의 아파치 톰캣(Apache Tomcat)을 구동해야하는 경우에는 아래와 같이 톰캣을 설치하면 된다. 본 글에서는 기존에 'tomcat' 서비스가 '/home/tomcat/apache-tomcat-9.0.63'에 설치되어 기본 포트로 구동되고 있는 것을 전제로 하여 톰캣 1대를 더 설치하는 것을 안내한다. 아래의 글처럼 기존 톰캣을 설치했다고 가정한다. 2022.02.19 - [분류 전체보기] - [Amazon Linux 2/CentOS 7] 아파치 톰캣(Apache Tomcat) 9.0 설치하는 법 기존 톰캣은 사용자 서비스를 위한 톰캣이고 새 톰캣은 관리자 서비스를 위한 톰캣이기에 새 톰캣의 구분자를 'admin'으로 정했다. 1. 아파치 톰캣 압축해제 아래의 명령어를 입력하여 추가.. 2022. 6. 10.
아파치 톰캣(Apache Tomcat) 세션아이디 변경 방법 하나의 도메인에 여러대의 아파치 톰캣(Apache Tomcat)을 구동 중인 경우 같은 세션아이디(JSESSIONID)로 인한 충돌이 발생할 수 있다. 필자의 경우 스프링 시큐리티(Spring Security)를 쓰는 프로젝트를 여러개 구동 중에 다른 웹사이트인데도 불구하고 중복 로그인이 집계되어서 세션아이디를 서로 다르게 아래와 같은 방법으로 설정했다. 1. 프로젝트 'web.xml' 설정 'web.xml' 파일에 세션아이디를 아래와 같이 입력할 수 있다. 600 JSESSIONID 2. 아파치 톰캣 'server.xml' 설정 나는 이 방법을 사용하지 않았지만 이것도 가능하다. 아파치 톰캣 루트 경로로 이동하면 'conf' 라는 폴더가 있는데 이 폴더 안에 'server.xml' 이라는 파일이 있다... 2022. 6. 10.
[CentOS] 아파치 톰캣(Apache Tomcat) 포트 8080를 방화벽에서 허용하는법 CentOS에는 firewall 이라는 방화벽을 사용하고 있기 때문에 로컬이 아닌 외부에서 아파치 톰캣(Apache Tomcat)의 기본 포트인 8080으로 접근하려고 하면 접속이 되지 않는다. 아래와 같이 방화벽에서 TCP 8080포트를 허용하는 설정을 수행하면 외부에서도 접근이 가능하다. 1. 방화벽 규칙 목록 확인 아래의 명령어를 입력하여 현재 적용되어 있는 방화벽 규칙 정보를 확인한다. 필자의 경우 8080/TCP 포트가 없는 것을 알 수 있었다. firewall-cmd --list-all 2. 방화벽 허용 포트 추가 아래의 명령어를 입력하여 방화벽에서 허용하는 포트를 추가한다. firewall-cmd --permanent --zone=public --add-port=8080/tcp 3. 방화벽 .. 2022. 6. 10.
[프로그래머스] 체육복 해설과 자바 소스코드 가장 쉬운 수준의 프로그래머스 알고리즘 문제이다. 하지만 제한사항이 많고 구체적으로 밝혀져 있지 않은 제한사항이 있기 때문에 까다롭다. 문제 내용은 아래의 문제 주소에 가서 확인하면 된다. 문제 주소 https://programmers.co.kr/learn/courses/30/lessons/42862 구체적으로 밝혀져 있지 않은 제한사항 여별의 체육복을 가져온 학생 1명마다 여벌의 체육복은 1벌만 있다. 앞번호의 학생과 와 뒷번호의 학생 모두 여벌의 체육복이 있는 경우 앞번호의 학생으로부터 체육복을 빌린다. 문제 해결 순서 앞번호의 학생으로부터 먼저 체육복을 빌릴 수 있도록 오름차순 정렬한다. 여벌의 체육복을 가져온 학생이 체육복을 도난 당한 경우 여벌의 체육복을 가져오지 않은 것으로 수정한다. 체육복을.. 2022. 6. 8.
[운영체제] 3장 프로세스 - 연습문제 해답 본 글의 해답은 저자가 홈페이지에서 제공하는 해답 위주로 적었고 내용 보충이 필요하다고 생각한 경우 내가 생각하는 답을 추가하였다. 1. 그림 3.30에 표시된 프로그램을 사용하여 LINE A에서 출력되는 내용을 설명하라. 자식이 값 복사본을 업데이트하므로 결과는 여전히 5입니다. 컨트롤이 부모에게 반환되면 그 값은 5로 유지됩니다. 2. 최초의 부모 프로세스를 포함하여 그림 3.31에 표시된 프로그램에 의해 몇 개의 프로세스가 생성되는가? 8개 3. Apple 모바일 iOS 운영체제의 원래 버전은 병행 처리 기법을 제공하지 않았다. 병행 처리로 인해 운영체제에 추가되는 세 가지 주요 문제에 대해 논의하라. CPU 스케줄러는 서로 다른 동시 프로세스를 인식해야 하며 동시 프로세스를 스케줄링하는 적절한 알.. 2022. 6. 6.
[운영체제] 2장 운영체제 구조 - 연습문제 해답 2장도 마찬가지로 저자가 홈페이지에서 제공하는 답 위주로 적었고 내용 보충이 필요한 경우 내가 생각하는 답을 추가하였다. 1. 시스템 콜의 목적은 무엇인가? 시스템 콜은 사용자 수준 프로세스가 운영체제의 서비스를 요청할 수 있는 것에 목적이 있습니다. 2. 명령 인터프린터의 목적은 무엇인가? 통상 커널에포함되지 않는 이유는 무엇인가? 명령 인터프린터는 사용자 또는 명령 파일에서 명령을 읽고 일반적으로 하나 이상의 시스템 호출로 변환하여 실행합니다. 명령 인터프리터는 변경될 수 있으므로 일반적으로 커널의 일부가 아닙니다. 3. UNIX 시스템에서 새 프로세스를 시작하기 위해 명령 인터프린터나 셸에서 어떤 시스템 콜이 실행되어야 하는가? 새 프로세스를 시작하려면 fork() 시스템 호출과 exec() 시스템.. 2022. 6. 6.
라이믹스(XE1) 문서 제목을 SQL로 일괄 변경하기 어떤 경우에는 라이믹스(XE1)에서 문서 제목을 일괄로 치환해야하는 경우가 있다. 그 경우에는 아래와 같이 SQL을 작성해서 처리할 수 있다. 1. 문서 목록 확인 아래의 SQL로 어떤 문서들이 어떤 문자열을 가지고 있는지 확인한다. SELECT * FROM rx_documents WHERE title LIKE '%찾을문자열%' 2. 제목이 의도대로 수정되는지 확인 아래의 SQL로 의도한 대로 제목이 수정되는지를 미리 확인한다. SELECT REPLACE(title,'찾을문자열', '') FROM rx_documents WHERE title LIKE '%찾을문자열%' 3. 제목 수정 정상적으로 SQL이 의도대로 작성한다고 생각이 들면 아래의 명령어로 제목을 수정한다. UPDATE rx_documents .. 2022. 6. 6.
IPTIME 허브/AP 모드 공유기를 VPN 서버로 사용할 때 포트포워딩이 필요하다. IPTIME 허브/AP 모드 공유기를 VPN 서버로 사용할 때 포트포워딩이 필요한데 L2TP의 경우 아래의 사진처럼 500번 포트를 포트포워딩하면 사용할 수 있다. 보안 이슈가 많은 PPTP는 사용하는 것을 추천하지 않는다. 2022. 5. 29.
IPTIME 허브/AP 모드에서 DDNS 설정이 잘 된다. 집에 허브는 없고 공유기만 여러대인 상황이라 공유기를 허브모드로 쓰고 있는데 IPTIME 공유기의 DDNS 기능을 사용하면 어떻게 될지 싶어서 사용해봤다. WAN에 선이 연결되어 있지 않은 IPTIME 공유기가 허브/AP 모드로 활성화되어 있을때 DDNS를 설정하면 외부망과 연결된 라우터의 공인 IP 주소로 DDNS가 등록되는 것을 아래의 사진처럼 확인할 수 있었습니다. 과거에는 내부 사설 IP 주소로 등록되었다고 하는데 개선되었나 봅니다. 참고문서 [1] 김석중, 메인 공유기 밑에 iptime 공유기를 연결해서 iptime DDNS 서버만 쓰는 방법은 없을까요???, 2CPU, 2013년 6월 13일. @2CPU 2022. 5. 29.
[CentOS 7/8] HTTPS 서비스를 위해 사설 SSL 인증서 생성하기 HTTPS 등 SSL을 이용한 암호화 통신을 생성하기 위해서는 SSL 인증서가 필요하다. 공인된 SSL 인증서를 쓰는 방법이 가장 좋겠지만 비용이 발생하고 굳이 공인된 SSL이 필요하지 않은 경우 사설(Private) SSL 인증서를 생성하여 사용하는 것이 편리하다. 이 글에서는 CentOS에서 OpenSSL을 이용한 사설 SSL 인증서를 생성하는 법에 대해서 다룬다. 편의를 위해서 아래의 경로에서 작업을 수행한다. 작업 경로: /etc/pki/tls/certs 1. OpenSSL을 설치한다. 아래의 명령어를 입력하여 OpenSSL을 설치한다. yum install openssl openssl version 2. 루트 인증서 키를 생성한다. 아래의 명령어를 입력하여 루트 인증서 키를 생성한다. opens.. 2022. 5. 28.
[CentOS] 즉시 재부팅 명령어 CentOS를 즉시 재부팅하는 명령어는 아래와 같다. sudo shutdown -r 대기시간 2022. 3. 16.
[GitLab] 보안 향상을 위해 reCAPTCHA를 활성화하자 reCAPTCHA를 활성화 하는 이유 GitLab을 운영하다보면 로그인을 무차별 대입(Brute Force)으로 시도하는 봇이 굉장히 많은 것을 알 수 있다. 안전한 해결방법은 GitLab에 접속가능한 IP 주소를 제한하는 것이겠지만 고정 IP를 사용하는 환경이 아니기에 IP 주소 목록 관리를 위한 지속적인 노력이 발생하므로 사용하기가 어렵다. 대안 중 하나로 로그인할 때 reCAPTCHA를 사용하는 것을 활성화하면 무차별 대입 공격을 어느 정도 막을 수 있다. reCAPTCHA 설정은 'Menu - Admin - Settings - Reporting - Spam and Anti-bot Protection'에서 진행할 수 있다. 2022. 3. 16.
GitLab 설치 요구사항(최소사양) Git 서버를 웹 기반으로 편리하게 관리하기 위해 사용할 수 있는 도구 중 하나로 GitLab이 있다. 금전적 여유가 많다면 업체에서 제공하는 Git 서비스를 이용하는 것이 편리하겠지만 비용적으로 부담스러운 부분도 있고 중요한 소스코드를 외부업체에 저장하는 것이다보니 보안적으로 사용이 어려울 경우 대안으로 GitLab으로 Git 서버를 자체 구축하는 방법을 사용한다. 본 글에서는 GitLab 서버를 구축하기 위한 요구사항을 소개한다. 운영체제 요구사항 운영체제에 따라 의존성 패키지 등의 문제로 GitLab 설치가 불가능할 수 있기에 잘 확인하여야 한다. GitLab 공식문서에는 아래와 같이 정리되어 있다. 지원하는 리눅스 배포판 Ubuntu 16.04/18.04/20.04 Debian 9/10 AlmaL.. 2022. 3. 16.
[CentOS7] 사설 Git 저장소 구축을 위해 GitLab을 설치하자 GitLab을 쓰는 이유 GitLab은 검증된 웹 기반의 데브옵스 플랫폼이다. GitLab은 Git 저장소 및 CI/CD, 이슈 추적, 보안성 테스트 등의 기능을 갖추었다. GitLab은 자체적으로 호스팅해서 쓸 수 있기에 사설 Git 저장소로 활용하기가 좋다. GitLab 라이센스는 커뮤니티 에디션(Community Edition ,CE)과 엔터프라이즈 에디션(Enterprise Edition, EE) 등이 있는데 커뮤니티 에디션의 경우 무료로 사용이 가능하다. 본 글에서는 GitLab CE를 설치하는 것을 다룬다. GitLab EE를 설치하고 아래와 같이 요금제를 구독하면 CE에는 없는 여러 버전을 사용할 수 있다. 1. 의존성 패키지 설치 및 설정 변경 아래의 명령어로 의존성 패키지를 설치한다. y.. 2022. 3. 15.
[GitLab] 지메일을 SMTP 메일 발송 서버로 설정하자 GitLab의 메일 발송 서버를 지메일로 설정하는 이유 GitLab은 여러가지 알림을 메일로 제공하는 기능이 있다. 메일발송 서버를 로컬에 만들어서 사용하는 방법은 사용하기는 간단하지만 보안적인 측면이나 메일 도달성(관리를 하지 않으면 스팸메일로 분류됨)을 고려하면 적합하지 않다. 그러므로 잘 알려진 메일 발송 서비스를 이용하는 것이 장기적으로 봤을 때 유리하다. 무료로 사용할 수 있는 메일 발송 서버로 가장 흔히 사용하는 것 중 하나로 지메일(Gmail)이 있다. 본 글에서는 지메일로 메일 발송을 하기 위해 GitLab SMTP를 설정하는 방법을 설명한다. 1. 지메일 관련 보안 설정을 하고 앱 비밀번호를 발급 받는다. 이 부분은 본 글에서 자세히 설명하지 않는다. 구글 정책과 화면이 자주 바뀌어서 적.. 2022. 3. 15.
[GitLab] 회원 가입 신청 승인하기 GitLab의 회원 가입 단계 GitLab은 기본적으로 회원 가입 신청이 가능하고 관리자가 신청을 승인하는 회원 가입 단계가 구성되어 있다. 회원 가입 신청이 있는 경우 'Menu - Admin - Users -> 2FA Disabled'로 가서 아래의 사진처럼 승인할 수 있다. 가입을 승인하는 버튼은 우측의 더보기 아이콘을 누르면 나타난다. 'Approve'를 누르면 위의 사진처럼 최종 승인 화면이 나타난다. 2022. 3. 15.
[GitLab] 회원가입 제한하기 GitLab의 회원가입 정책 GitLab은 기본적으로 회원 가입이 가능하도록 설정되어 있다. GitLab의 회원가입 정책 수정 그래서 회원가입을 받지 않을거면 'Menu - Admin - Settings - General - Sign-up restrictions'로 이동하여 'Sign-up enabled' 버튼을 체크 해제하면 된다. 2022. 3. 15.
[CentOS 7] 메모리 2GB만으로 GitLab을 구동하지 말자. 메모리가 GitLab에 미치는 영향 GitLab을 메모리에 적재할 공간이 부족해서 가상 메모리를 사용하는데 이 때문에 실행하는데 필요한 시간이 길다. 정상적으로 실행하는 것도 오래 걸리지만 사용자가 다수 있는 경우 사실상 사용이 어렵다. 실험 해보니까 전체 메모리가 1,837MB인데 대부분의 메모리가 GitLab 관련 프로그램 구동에 사용된다. 결론은 메모리 2GB에서 GitLab은 못 쓴다. 메모리를 증설해서 다시 설치하니 잘 동작한다. 메모리가 최소 4GB는 되어야 정상적으로 사용가능하다. 2022. 3. 15.
[CentOS] Crontab을 통해 프로그램 스케줄링 CentOS에서 매일 정해진 시간에 프로그램을 구동하고 싶다면 crontab을 이용하여 프로그램 스케쥴을 설정할 수 있다. 1. 프로그램 스케줄 등록 아래의 명령어를 입력하여 프로그램 스케줄 등록 프로그램을 실행한다. crontab -e 아래의 명령어를 입력하여 프로그램 스케줄을 설정한다. '분 시 일 월 요일 명령어'로 구분해서 입력하면 된다. 모든 조건에 해당하게 설정하려면 '*'를 사용하면 된다. '분'은 0부터 59까지 설정할 수 있으며 '시'는 0부터 23까지 설정할 수 있다. '일'은 1부터 31일까지, '월'은 1부터 12까지, 요일은 0부터 7까지 설정할 수 있다. 0과 7은 일요일이며 1은 월요일, 2는 화요일이다. 2. 프로그램 스케줄 목록 확인 아래의 명령어를 입력하여 등록한 프로그램.. 2022. 3. 5.