|
1 |
| -# KorCham |
| 1 | +# **KorCham** |
2 | 2 | 컴퓨터활용능력 자격증 자리확인 매크로
|
| 3 | + |
| 4 | +<p align="center"> |
| 5 | + <img src="https://user-images.githubusercontent.com/50317129/78545141-3de1d980-7836-11ea-81f4-08cdeb1f2c92.png" alt="Main" title="Main"> |
| 6 | +</p> |
| 7 | + |
| 8 | +2월 끝자락에 공부를 마무리하고 시험을 보려고 했으나, COVID-19의 여파로 시험이 14일까지 중지되는 바람에 가뜩이나 없는 자리가 몰려서 자리를 구할 수가 없게됐다. |
| 9 | +<br /> |
| 10 | +회사에서 하루 종일 자격증 자리만 쳐다볼 수도 없는 노릇이고, 일일히 들어가기도 귀찮은데다, 까먹는 일도 더러 있어서 자리 잡기가 난감했다. |
| 11 | +<br /> |
| 12 | +이미 다 끝낸 공부임에도 지속적으로 기억하기 위해 계속 붙잡고 있는게 너무 싫어서 최대한 빨리 자리를 잡을 필요가 있었다. |
| 13 | +<br /> |
| 14 | +이 프로그램은 그러한 취지에서 개발됐다. |
| 15 | + |
| 16 | +## KorCham 2.4 RELEASE (Latest) |
| 17 | + |
| 18 | ++ 간단한 프로그램 구동을 위한 cmd, sh, bash 파일 추가 |
| 19 | + |
| 20 | ++ 시간이 1000ms를 넘어갈 시 단위가 s로 변경되도록 개선 |
| 21 | + |
| 22 | +## KorCham 2.3 RELEASE |
| 23 | + |
| 24 | ++ 설정 파일에 지정된 사운드 경로에 사운드 파일이 없을 경우 사용자의 선택에 따라 사운드 파일을 다운로드 받을 수 있도록 개선 |
| 25 | + |
| 26 | +## KorCham 2.2 RELEASE |
| 27 | + |
| 28 | ++ URL연결 시간 및 데이터 처리 시간 출력기능 추가 |
| 29 | + |
| 30 | ++ KorChamConf.json 파일이 없을 경우 자동으로 기본 설정값을 가진 json파일이 생성되도록 개선 |
| 31 | + |
| 32 | +## KorCham 2.1 RELEASE |
| 33 | + |
| 34 | ++ 좌석 발생 시 사운드 출력 기능 추가 |
| 35 | + |
| 36 | ++ 설정 파일에서 관련 설정이 가능하도록 개선 |
| 37 | + |
| 38 | +## KorCham 2.0 RELEASE |
| 39 | + |
| 40 | ++ KorChamConf.json을 통한 URL, 날짜 지정기능 추가 |
| 41 | + |
| 42 | +## KorCham 1.0 RELEASE |
| 43 | + |
| 44 | ++ 컴퓨터 활용능력 1급 서울 상공회의소 제 3 ~ 5시험장의 3월 18일까지의 좌석 수 출력 |
| 45 | + |
| 46 | +# **INFO** |
| 47 | + |
| 48 | +개발언어 : `JAVA` |
| 49 | + |
| 50 | +#### **지원 OS** |
| 51 | ++ Microsoft **Windows10** |
| 52 | ++ AIX |
| 53 | ++ CentOS |
| 54 | ++ 기타 JVM 구동 가능한 디바이스 |
| 55 | + |
| 56 | +#### **JAVA VERSION** |
| 57 | ++ **JDK 1.8** |
| 58 | + |
| 59 | +--- |
| 60 | +### **사용 방법** |
| 61 | +컴파일 결과물은 **.jar**파일이며, 해당 파일을 실행하면 자동으로 설정파일의 내용대로 지정된 날짜까지의 좌석을 탐지하고 출력한다. |
| 62 | +<br /> |
| 63 | +좌석이 없을 경우 별도의 내용이 출력되지 않으며, 좌석이 하나 이상 있을 경우 URL의 순번과 날짜, 시간, 좌석 수를 출력한다. |
| 64 | +<br /> |
| 65 | + |
| 66 | +프로그램 시작 방법은 기본적인 JAVA 명령어를 사용하거나, Shell 파일을 실행해서 구동할 수 있다. |
| 67 | +<br /> |
| 68 | +<br /> |
| 69 | + |
| 70 | +**JAVA 명령어 실행** : cmd 혹은 PowerShell을 키고 KorCham.jar가 위치한 폴더로 이동해서 `java -jar KorCham.jar` 명령어를 실행한다. |
| 71 | +<br /> |
| 72 | + |
| 73 | +**start.cmd** : Windows OS용 Shell 프로그램으로, 해당 Shell을 실행하면 자동으로 프로그램이 실행된다. |
| 74 | +<br /> |
| 75 | + |
| 76 | +**start.sh** : sh계열 Terminal용 Shell 프로그램으로, 해당 Shell을 실행하면 자동으로 프로그램이 실행된다. CLI 환경에서의 실행방법은 `./start.sh` 명령어를 입력하면 된다. |
| 77 | +<br /> |
| 78 | + |
| 79 | +**start.bash** : bash계열 Terminal용 Shell 프로그램으로, 해당 Shell을 실행하면 자동으로 프로그램이 실행된다. CLI 환경에서의 실행방법은 `./start.bash` 명령어를 입력하면 된다. |
| 80 | +<br /> |
| 81 | + |
| 82 | +**KorChamConf.json** 설정파일을 통해 프로그램의 세부 사항을 지정할 수 있다. 좌석을 검사할 대상의 URL은 JSON Array을 통해 여러개의 URL을 지정할 수 있으며, URL별로 날짜 또한 개별적으로 지정할 수 있다. |
| 83 | +<br /> |
| 84 | +그 밖에도 로그의 경로나 사운드파일의 경로, 기능 사용 여부를 지정할 수 있다. |
| 85 | +<br /> |
| 86 | + |
| 87 | +자세한 설정파일 사용 방법은 아래의 **설정방법** 문단을 확인한다. |
| 88 | + |
| 89 | +--- |
| 90 | +### **설정방법** |
| 91 | + |
| 92 | +KorCham이 실행되면 KorCham.jar 위치에 설정파일이 존재하는지 여부를 확인하고, 없을 경우 KorChamConf.json을 생성한다. |
| 93 | +<br /> |
| 94 | + |
| 95 | +<p align="center"> |
| 96 | + <img src="https://user-images.githubusercontent.com/50317129/78545134-3c181600-7836-11ea-8261-88e19f69e923.png" alt="Main" title="Main"> |
| 97 | +</p> |
| 98 | + |
| 99 | +KorChamConf.json의 형태는 위 사진과 같으며, 설정방법은 아래와 같다. |
| 100 | +<br /> |
| 101 | +<br /> |
| 102 | + |
| 103 | +**logPath** : 로그파일 저장 경로 (기본값: %KorCham.jar위치%\\logs\\yyyy-MM-dd hh-mm-ss.log) |
| 104 | +<br /> |
| 105 | + |
| 106 | +**soundFile** : .wav파일 경로 (기본값: %KorCham.jar위치%\\sound\\alert.wav) |
| 107 | +<br /> |
| 108 | + |
| 109 | +**logActive** : 로그기능 사용 여부 (기본값 : true) |
| 110 | +<br /> |
| 111 | +true : 로그 기능 사용 |
| 112 | +<br /> |
| 113 | +false: 로그 기능 미사용 |
| 114 | +<br /> |
| 115 | + |
| 116 | +**soundActive** : 사운드 기능 사용 여부 (기본값 : true) |
| 117 | +<br /> |
| 118 | +true : 사운드 기능 사용 |
| 119 | +<br /> |
| 120 | +false : 사운드 기능 미사용 |
| 121 | +<br /> |
| 122 | + |
| 123 | +**urlList** : 좌석을 감시할 URL 배열 |
| 124 | +<br /> |
| 125 | +**url** : URL (기본값 : 컴퓨터 활용능력 1급 서울 상공회의소(남대문) 제 3 ~ 5시험장) |
| 126 | +<br /> |
| 127 | + |
| 128 | +**date** : 좌석을 검사할 가장 마지막 날짜 (기본값 : 최초로 KorChamConf.json 생성일자의 15일 이후) |
| 129 | +<br /> |
| 130 | +[yyyy. mm. dd]의 형태로 입력하면, 해당 날짜 전 까지만 검사한다. |
| 131 | +<br /> |
| 132 | + |
| 133 | +urlList의 경우, 배열형태로 이루어져 있어 여러 URL을 등록해서 감시할 수 있다. |
| 134 | +<br /> |
| 135 | +물론 URL의 개수가 많아질 수록 프로그램의 루틴이 점점 길어진다. |
| 136 | +<br /> |
| 137 | +<br /> |
| 138 | + |
| 139 | +**\\를 이용한 경로는 반드시 \\\\처럼 두번 입력해야 인식이 가능하니 주의** |
| 140 | + |
| 141 | +--- |
| 142 | +### **주의사항** |
| 143 | + |
| 144 | +실행 시 JDK가 1.8 이상인지 확인할 것. |
| 145 | +<br /> |
| 146 | +Windows OS의 경우 경로가 (\\, 역슬래쉬)로 표시되는데, json 파일에서 이러한 역슬래쉬를 표시하려면 \\를 두번 입력해야 정상적으로 json에서 표시할 수 있다. |
| 147 | +<br /> |
| 148 | +즉, 실제 경로가 `C:\Program Files`라면, json 파일에는 `C:\\Program Files`라고 입력해야 정상적으로 인식이 가능하다. |
| 149 | +<br /> |
| 150 | +이는 프로그래밍에서 \\가 다른 알파벳과 결합하여 ASCII와 같은 특수문자를 매칭해 표현하는데 사용되기 때문으로, 프로그래밍 상의 한계라 어쩔 수 없다. |
| 151 | + |
| 152 | +--- |
| 153 | +### **주의사항** |
| 154 | + |
| 155 | +해당 프로그램을 사용하여 꽤나 타이트한 자리싸움에서 가장 빠른 3월 15일에 신청을 성공했다. |
| 156 | +<br /> |
| 157 | +...는 COVID-19의 무지막지한 기승으로 밀리게 되고, 다시 가장 빠른 23일에 신청했다. |
| 158 | +<br /> |
| 159 | +....는 또 밀려서 다시금 가장 빠른 4월 5일에 신청에 성공했고, 무사히 시험을 볼 수 있었다. |
| 160 | +<br /> |
| 161 | + |
| 162 | +무려 두 번이나 밀렸음에도 악착같이 가장 빠른 시간대에 잡았던 것으로 보아 확실히 무작정 들어가는 것 보단 확실히 낫다. |
| 163 | +<br /> |
| 164 | +<br /> |
| 165 | + |
| 166 | +어찌보면 자리 싸움에서 우위를 차지하는 부정행위라는 생각도 해봤는데, 공연 티켓팅 프로그램마냥 자동적으로 자리를 잡아주는 것도 아니고, 단순히 자리의 갯수만을 보여주는데서 그친다. |
| 167 | +<br /> |
| 168 | +즉, 프로그램이 암만 알려줘도 실제로 자리를 차지하는 건 손싸움. 실제로도 괜찮은 자리를 놓쳤던 경험이 몇 번 있었다. |
| 169 | +<br /> |
| 170 | +<br /> |
| 171 | + |
| 172 | +개발 당시 3월 15일 시험이 아직 밀리지 않았었고, 이미 프로토타입 구동 시에 원하는 자리를 잡은 덕택에 사용 시간보다 개발 시간이 더 많았을 뻔 했으나, COVID-19의 영향으로 지속적으로 밀리면서 제 성능을 발휘한 프로그램 |
| 173 | +<br /> |
| 174 | + |
| 175 | +어차피 며칠만 쓸 프로그램이라 설정 파일의 내용들은 원래 하드코딩되어 있었으나, 지속적인 일정 연기와 회사의 단축근무로 인해 여유가 많아져 프로그램의 많은 부분들을 개선할 수 있었다. |
| 176 | +<br /> |
| 177 | +어찌보면 COVID-19는 이 프로그램이 발전할 수 있었던 원동력(?)이 된 셈이다. |
0 commit comments