SBCL 소스를 커맨드 프롬프트에서 스크립트처럼 실행 시에, 특수 변수 *posix-argv*를 사용하여 실행 파라미터(인자)를 리스트의 형태로 가져올 수 있다.


아래와 같이 example.lisp을 작성한다.

(print *posix-argv*)


실행 파라미터를 주어 실행해보면, 

sbcl --script example.lisp enter your argument


("sbcl" "enter" "your" "argument")


첫번째 요소로 SBCL 실행 파일명을 가지며, 나머지에 실행 파라미터가 포함된 리스트가 출력되는 것을 볼 수 있다.




<테스트 환경>

OS : Windows 7

SBCL 버전 : 1.2.7


,

1. UTF-8 한글 표시 설정


  1. .emacs 파일에 다음의 내용을 추가한다.
    (set-language-environment "Korean")
    (prefer-coding-system 'utf-8)
    
  1. 하지만 이렇게만 할 경우, 버퍼의 내용은 제대로 표시되지만, 한글로 된 파일명을 가진 파일을 읽을 때, 파일명이 같은 형식으로 표시되거나, 새로 한글로 된 파일명을 입력하여 저장할 때, 제대로 저장이 되지 않는 등의 문제가 있다. 파일명을 위한 인코딩 설정을 위해 .emacs 파일에 아래의 내용을 추가한다.
    (set-file-name-coding-system 'cp949-dos)
    


2. Shift-Space 키에 의한 한영 변환 기능을 제거


윈도우 환경 Emacs에서는 Shift-Space, 한영키 둘 다에 의해 한영 변환을 지원하지만, 가끔씩 상태가 꼬여서 불편한 사태가 발생하게 된다.


.emacs 파일에 다음 내용을 추가하면 Shift-Space 키에 의한 한영 변환 기능을 제거할 수 있다.


  • [추가] 하지만 이렇게 하더라도 C-s를 눌러서 들어가는 Search buffer로 들어가면 Shift-Space에 의한 변환이 동작한다. 그러므로 상태바에 한2 이런 표시가 보이면 Search buffer로 냉큼 들어가서 Shift-Space를 누르면 원래대로 돌아온다
(global-unset-key (kbd "S-SPC"))


혹은 Shift-Space 키를 다른 기능으로 설정할 수도 있다.

(global-set-key (kbd "S-SPC") 'other-window) ; 다른 창으로 이동 기능으로 설정


키에 설정된 기능을 확인하려면, M-x를 누르고 describe-key를 입력 후 해당 키를 누르거나, M-x를 누르고 describe-bindings를 눌러 전체 설정 내역을 확인할 수 있다.



참고 사이트

<테스트 환경>
- OS : Windows 10
- Emacs 버전 : Emacs 24.5.1 윈도우용
,

SBCL에서 디렉토리 내의 파일/디렉토리 리스트를 가져오는 방법입니다. (sb-posix, sb-grovel을 사용한 방법)


1. 디렉토리 리스트 가져오기


(require :sb-posix)
(require :sb-grovel)

(defun is-directory (pathname) ; 주어진 경로가 디렉토리인지 체크한다
  (ignore-errors
    (sb-posix:s-isdir (sb-posix:stat-mode (sb-posix:lstat pathname)))
    )
  )

(defun get-directory-contents (pathname) ; 주어진 경로 내의 모든 디렉토리/파일 리스트를 얻는다
  (let ((dir (sb-posix:opendir pathname)))
    (prog1
      (loop for dirent = (sb-posix:readdir dir)
           until (sb-grovel::foreign-nullp dirent)
           unless (or (equal (sb-posix:dirent-name dirent) ".")
                      (equal (sb-posix:dirent-name dirent) ".."))
           collect (concatenate 'string pathname "/"
                                (sb-posix:dirent-name dirent)))
      (sb-posix:closedir dir))
    )
  )

(defun get-dirs (dir) ; 주어진 경로 내의 모든 디렉토리 리스트를 얻는다 (get-directory-contents의 결과 중 디렉토리가 아닌 항목을 제거한다)
  (remove-if-not #'is-directory (get-directory-contents dir))
  )


(defparameter dir-list nil)

(setq dir-list (get-dirs ".")) ; 현재 디렉토리 내의 디렉토리를 가져와 DIR-LIST에 저장한다


(dolist (dir dir-list) ; DIR-LIST의 내용을 출력한다
  (print dir)
  )




2. 파일 리스트 가져오기


(require :sb-posix)
(require :sb-grovel)

(defun is-directory (pathname) ; 주어진 경로가 디렉토리인지 체크한다
  (ignore-errors
    (sb-posix:s-isdir (sb-posix:stat-mode (sb-posix:lstat pathname)))
    )
  )

(defun get-directory-contents (pathname) ; 주어진 경로 내의 모든 디렉토리/파일 리스트를 얻는다
  (let ((dir (sb-posix:opendir pathname)))
    (prog1
      (loop for dirent = (sb-posix:readdir dir)
           until (sb-grovel::foreign-nullp dirent)
           unless (or (equal (sb-posix:dirent-name dirent) ".")
                      (equal (sb-posix:dirent-name dirent) ".."))
           collect (concatenate 'string pathname "/"
                                (sb-posix:dirent-name dirent)))
      (sb-posix:closedir dir))
    )
  )

(defun get-dirs (dir) ; 주어진 경로 내의 모든 디렉토리 리스트를 얻는다 (get-directory-contents의 결과 중 디렉토리가 아닌 항목을 제거한다)
  (remove-if-not #'is-directory (get-directory-contents dir))
  )

(defun get-files (dir) ; 주어진 경로 내의 모든 파일 리스트를 얻는다 (get-directory-contents의 결과 중 디렉토리인 항목을 제거한다)
  (remove-if #'is-directory (get-directory-contents dir))
  )

(defparameter file-list nil)

(setq file-list (get-files ".")) ; 현재 디렉토리 내의 파일 리스트를 가져와 FILE-LIST에 저장한다


(dolist (file-item file-list) ; FILE-LIST의 내용을 출력한다
  (print file-item)
  )




<테스트 환경>

OS : Windows 7

Emacs 버전 : Emacs 24.3 윈도우용

SBCL 버전 : 1.2.7

Slime 버전 : 2.21


,

파일에 저장된 SBCL 소스를 커맨드 프롬프트에서 스크립트처럼 실행할 수도 있다.


sbcl.exe --script <filename>



아래와 같이 배치파일로 저장해두어도 된다.


runcl.bat :

sbcl.exe --script %1



<테스트 환경>

OS : Windows 7

SBCL 버전 : 1.2.7


,





Lazarus는 델파이와 호환되는 파스칼 개발 환경으로 오픈 소스이며 윈도우, 리눅스, Mac OS X 등의 플랫폼을 지원합니다.



1. 설치


1) 다음 홈페이지에서 Lazarus 최신 버전을 다운 받아 인스톨합니다.


 - Lazarus Homepage : http://www.lazarus-ide.org/



2. 샘플 프로젝트 실행


1) File - Open 메뉴를 선택하고, <설치 폴더>/examples/hello.lpi 파일을 선택합니다.


2) Run - Compile을 선택하여 컴파일합니다.


3) Run - Run을 선택하면 프로그램이 실행되며 메시지 박스가 나타납니다.





본 내용은 아래 버전을 기준으로 작성되었습니다.


Lazarus Version 1.4.0 for Windows 32 bit



,