1. 다음과 같은 내용으로 배치파일을 만든다.

net start <서비스명>

2. 배치파일에 오른쪽 클릭을 한 뒤, 바로가기 만들기를 선택한다.

3. 생성된 바로가기 아이콘에 오른쪽 클릭을 한 뒤, 속성을 선택한다.

4. 바로가기 탭에서 고급... 버튼을 누른 뒤, 관리자 권한으로 실행에 체크한 후, 확인을 누른다.

5. 이제 단축아이콘으로 서비스를 실행할 수 있다.

사용예) 고질적인 AhnLab Safe Transaction과 같은 프로그램을 서비스 제어판에 들어가지 않고 실행할 수 있다!!


,

커맨드 라인 상에서 서비스 실행하기

net start <서비스명>


,





Halite는 오픈 소스 인공 지능 프로그래밍 경연장으로, 사용자는 자신이 선택한 코딩 언어를 사용하여 봇을 움직이는 코드를 작성하여 2차원 가상보드 상에서 다른 사용자와 겨루게 된다.

  • 홈페이지 : https://halite.io/
  • 지원 OS : MacOS, Windows, Linux-x64
  • 지원 언어 : C++, CSharp, Clojure, Dart, Elixir, Go, Haskell, Java, JavaScript, Julia, Kotlin, ML-StarterBot-Python, OCaml, PHP, Python3, Ruby, Rust, Scala, Swift

게임 규칙


계정 생성

  • Halite를 플레이하기 위해서는 github 계정이 필요하다. 계정이 없다면 Halite 홈페이지에서 Sign up/Sign in 버튼을 누른 후, 계정을 생성한다. 주의할 점은 Username에 입력하는 내용이 실제로 게임내에서 자신을 나타내는데 사용되며 나중에 편집할 수 없다!

스타터킷 다운로드

스타터킷 편집

  • 스타터킷의 압축을 풀고 봇에 대한 소스 파일을 편집한다. 파이썬의 경우는 MyBot.py 파일을 편집하면 된다. 물론 수정 안하고 그대로 사용해도 된다!


오프라인 테스트

  • 수정한 스타터킷을 업로드하기 전에 오프라인에서 테스트해볼 수 있다. 윈도우의 경우는 run_game.bat를, 유닉스 계열의 경우는 run_game.sh를 실행하면 된다.

스타터킷 업로드

  • 스타터킷 폴더에서, 봇에 대한 소스 파일과 hlt 폴더 두가지를 압축 파일 최상위에 오도록 zip 압축을 한다.
  • Halite 홈페이지 상단의 Submit a bot을 누른 뒤, 왼쪽에 Select a zip 버튼을 눌러 스타터킷을 업로드할 수 있다.
  • 업로드한 후, 소스 코드가 컴파일 되는데 일정 시간이 소요되며, 컴파일이 완료되면, 주기적으로 랜덤한 상대와 자동적으로 대결이 이루어지게 된다.


전적 확인

  • 홈페이지 상단에서 플레이어 아이콘을 누르고, View Profile을 선택하면 그동안의 대결 히스토리를 확인할 수 있다. 시간 표시 부분을 누르면 그래픽과 함께 확인할 수 있다.


리플레이 파일 확인

  • Halite 홈페이지 상단의 Submit a bot을 누른 뒤, 왼쪽에 Select file 버튼을 눌러 오프라인 테스트시 생성된 리플레이 파일(.hlt)을 올려 그래픽과 함께 확인할 수 있다.

참고 자료


,

Pandoc은 각종 포맷 상호간의 변환을 수행할 수 있는 유틸리티로 Markdown, HTML 사이의 변환도 지원한다. 지원되는 포맷은 홈페이지서 다음과 같은 다이어그램으로 설명하고 있다.




설치

  1. https://github.com/jgm/pandoc/releases 에서 Pandoc 최신 버전을 다운받아 설치한다.

Markdown -> HTML 변환

  • Markdown을 HTML로 변환 (-o <출력파일명>을 생략하면 화면으로 출력된다.)
    pandoc -f markdown -t html <입력파일명> -o <출력파일명>
    
  • Github 스타일 Markdown을 HTML로 변환 (-o <출력파일명>을 생략하면 화면으로 출력된다.)
    pandoc -f markdown_github -t html <입력파일명> -o <출력파일명>
    

기타 변환

  • 미디어 위키를 HTML로 변환 (미디어 위키 특징 : Markdown에서 사용할 수 없는 테이블 문법을 사용할 수 있어 참고할 만하다.)
    pandoc -s -f mediawiki -t html <입력파일명> -o <출력파일명>
    

참고 사이트


<테스트 환경>
- OS : Windows 7 (64bit)
- Pandoc 버전 : 2.0.5


,

(point)

현재 위치를 반환. 1부터 시작. 한글도 1씩 할당.

(point-min)

최소 위치를 반환.

(point-max)

최대 위치를 반환.

(goto-char pos)

커서를 해당 위치로 이동. (pos: 이동할 위치.)

(goto-line line)

커서를 특정 행 번호로 이동. (line: 이동할 행번호.)

(forward-line line)

커서를 현재로부터 주어진 라인 수만큼 이동한다. (line: 이동할 라인 수.)

(search-forward "target-string" limit-of-search fail-fn repeat-count)

문자열을 검색하여 발견된 검색어 바로 뒤에 커서를 위치시킨다. 발견시 t를 반환한다.

  • target-string : 검색어.
  • limit-of-search : 최대 검색 범위를 위치로 제공하면 현재 위치에서 해당 위치 사이에서 검색. (nil : 제한 없음.)
  • fail-fn : 검색 실패시 실행할 구문 또는 nil(signal을 발생시킴) 또는 t(무시)로 설정할 수 있다.
  • repeat-count : 검색 횟수. 없으면 1회, 마이너스이면 역방향 검색어.

(number-to-string number)

숫자를 문자열로 변환. (number : 변환할 숫자.)

(delete-char size)

커서로부터 순방향으로 사이즈만큼 지운다. (size : 지울 사이즈.)

(delete-backward-char size)

커서로부터 역방향으로 사이즈만큼 지운다. (size : 지울 사이즈.)

(length str)

문자열의 길이를 반환한다. 한글의 경우도 1로 계산. (str : 문자열.)

(string-width str)

문자열의 보이는 사이즈를 반환한다. 한글의 경우는 2로 계산. (str : 문자열.)

(insert str)

현재 위치에 문자열을 삽입. (str : 삽입할 문자열.)

(sit-for sec)

메세지 등을 출력한 수 일정 시간 대기한다. 키입력이 들어오면 해제됨. (sec : 대기할 초 수)

(sleep-for sec)

메세지 등을 출력한 수 일정 시간 대기한다. 키입력이 들어와도 해제안됨. (sec : 대기할 초 수)

(thing-at-point 'word)

커서가 위치하는 곳의 단어를 얻는다.

(thing-at-point 'line)

커서가 위치하는 곳의 한 라인을 얻는다. 개행 문자도 포함.

(message string), (message format-string ...)

메세지를 출력한다.

(kill-new string)

문자열을 클립보드에 저장한다. (string : 저장할 문자열)

(yank)

클립보드의 내용을 현재 위치에 붙여넣는다.

(cl-search str1 str2)

첫번째 문자열이 두번째 문자열에 포함되는지 검사한 후 발견 위치(0부터 시작)를 반환한다. 발견되지 않을 경우 nil을 반환한다. 문자열 뿐만 아니라 시퀀스 전체에 대해 사용가능하다.

(sort line-list 'string<)

문자열의 리스트를 정렬한다. (line-list : 정렬할 문자열 리스트)

(substring string from to)

문자열의 일부를 자른다. (string : 자를 문자열, from : 시작 위치(0부터 시작), to : 끝 위치)

(format-time-string "%Y-%m-%d")

날짜 포맷에 일치하는 현재 날짜를 반환한다.

(read-string str)

미니 버퍼로부터 문자열을 입력받는다. (str : 입력시 미니 버퍼에 표시할 메세지)

(line-beginning-position)

현재 줄의 시작 위치를 반환한다.

(line-end-position)

현재 줄이 끝나는 위치를 반환한다.

(beginning-of-line)

현재 줄의 시작 위치로 커서를 이동시킨다.

(end-of-line)

현재 줄이 끝나는 위치로 커서를 이동시킨다.

region-beginning

선택 영역의 시작 위치를 반환한다.

region-end

선택 영역이 끝나는 위치를 반환한다.

use-region-p

선택 영역의 사용 여부를 반환한다.

buffer-file-name

[변수] 현재 버퍼의 절대 경로

buffer-file-truename

[변수] 현재 버퍼의 경로 (~/..와 같이 C-x f, C-x C-b에서 실제로 보여지는 경로)

default-directory

[변수] 현재 버퍼의 기본 디렉토리


<테스트 환경>
 - OS : Windows 7 (32bit)
 - Emacs 버전 : Emacs 24.3 윈도우용


,