명령 처리기를 만들려고 하는데(PHP) 어떤 식이 좋을까요?

사랑천사의 이미지

PHP를 이용하여 코딩 중입니다. 이전에 소형부터 대형에 이르는 커뮤니티망용 보급형 서비스를 만들어 보겠다고 하면서 DB 구조에 대한 계획서를 대강 올렸던 적이 있엇죠 아마. 그 프로젝트 들어갔습니다.

근대 명령 처리기가 이 프로그램에서 필요하거든요.
그래서... 아래와 같은 클레스를 만들었습니다. 물론 원래는 저 모양세가 아니었습니다.

  // 명령문에 대한 실행 방식 정의
  define ("EXEC_INLINE", 1); // 내부 명령
  define ("EXEC_EXTERN", 2); // 외부 명령
 
  // 명령문 명세 객체 선언과 정의
  Class Commands {
    var $이름; // 명령문 이름
    var $명령어; // 실제 함수 또는 외부 명령
    var $실행방식; // 내부 혹은 외부 명령 결정
 
    // 초기화
    function Commands () {
      $this->이름 = array ();
      $this->명령어 = array ();
      $this->실행방식 = array ();
    }
 
    // 명령 항목 추가
    function 항목추가 ($이름, $실행령, $실행방식) {
      $this->이름[] = $이름;
      $this->명령어[] = $실행령;
      $this->실행방식[] = $실행방식;
    }
 
    // 명령어 목록 출력
    function 목록 () {
      $c = 0;
      while ($c < count ($this->이름)) {
        echo ($this->이름[$c].", ".$this->명령어[$c].", ".
              $this->실행방식[$c]."\n");
        $c++;
      }
    }
 
    // 명령어 검색 - 배열 번지수 반환
    function 검색 ($검색어) {
      $c = 0;
      while ($c < count ($this->이름)) {
        if ($this->이름[$c] == $검색어) {
          return $c;
        }
        $c++;
      }
      return (-1);
    }
  }
  $cmdlst = new Commands;
  $cmdlst->항목추가 ("날짜", "date", EXEC_EXTERN);
  $cmdlst->항목추가 ("달력", "cal", EXEC_EXTERN);
  $cmdlst->항목추가 ("쪽지", "쪽지", EXEC_INLINE);

원래는 '최소변수' 라는 항목과 '변수형식'이란 항목이 더 있었습니다. 이것들은 ...
1. 최소변수 = 실행 함수나 외부 명령에 넘길 최소 인자의 수.
2. 변수형식 = 함수나 외부 명령에 전달할 인자의 형식이 가변인가 비가변인가에 대한 정의.

뭐 이런 거였습니다. 이름은 실제 명령의 이름이고 명령어 부분은 내부 함수나 외부 명령어를 정의 하는 부분입니다. 저 객체의 문제가 있는 부분이라면 배열이 꼬이는 경우를 생각 하지 않은게 일단 있겠죠. 어떤 코드에 의해서 배열이 꼬일 수도 있다는 점을 생각지 않은 거니까요.

그럼 제가 질문 하고 싶은 내용을 .. 그러니까 조언 해 주십사 하는 것을 적겠습니다.

1. 명령은 내부 함수나 외부 명령으로 처리 될 것이고 cmdlst는 어디서나 실행 가능한 전역 명령문 리스트입니다. 그리고 각 장소별 하위 함수(게시판, 매일함, 자료실 등을 처리 하는) 내에서 계별 명령 리스트가 또 필요 합니다. 이런 것 있잖아요. 게시판이면 글 쓰기가 W고 자료실은 자료 올리기가 UP라던가. 다운로드는 DN, 게시판은 다운로드는 없지만 갈무리가 있어야 하니까 PR이 잇어야 겠고요. 이전 Telnet나 모뎀으로 접속 하던 천리안이나 하이텔 생각 하시면 이해가 가실 겁니다. 제가 오래전 글에도 적은 것 같은데 Telnet와 Web가 연동 가능한 시스템이라서 말이죠. 그리고 Web에서도 이전 PC통신 쓰는 맛이 나면 좋으니까 명령행 처리기가 역시 필요합니다. 아니 모티브겠죠. 중요한 점은 이런 형식으로 프로그램이 작성 될 시에 지금 이 객체가 도움이 될 것인가 하는 부분이고요. 지금 객체를 선언하고 영역을 할당 해 주었습니다. cmdlst는 시범적으로 전역 명령 리스트를 할당한 것입니다.
2. 처음에는 명령행 해석기를 정해진 최소 인자 만큼을 공백 문자 하나씩으로 불리 하여 구하고 최소값의 인자가 구해 지면 그것을 베열로 명령에 넘기는 형식으로 만들었었습니다. 물론 여기에는 explode 함수를 사용 했고 배열 문자열 첫 번째로 발견 되는 문자열(공백 포함 안 됨)은 명령어로 구분하여 전역/지역 명령 리스트에서 검색을 해서 명령이 없다면 오류를 발생 시키게 했었습니다. 근대 지금 새로 고친 객체를 보시면 아시겠지만, 최자 인자수에 대한 부분을 지웠습니다. 이전 함수들은

func ($1, $2, $3...)

이런 식이었으나 지금은
func ($str)
와 같이 해서 명령줄의 인자 해석은 함수 내부로 돌리려고 합니다. 단지 명령어와 인자 리스트의 구분만을 해석기에서 처리 하게 하려는 거죠. 이렇게 되면 약간 복잡한 부분이 함수마다 추가 되고 곤란해 질 수 있겠습니다. 하지만 차라리 지금 생각 하고 있는 방법을 사용하는게 효율적일 것 같아서요. 이 부분에서 문제는 과연 인자를 문자열로 받아서 해석 하는 것이 옳은가, 이전처럼 해석기에서 함수나 명령에 해당하는 것들을 해석 해서 그것들을 함수나 외부 명령에 순차적으로 넘기는 것이 옳은가 하는 것입니다. 사실, 제가 이런 것을 생각 한 것은 C였다면 바로 썼을 겁니다. 배열과 문자열을 1바이트 단위로 분리 시켜 가며 검토하여 처리 하는게 C에선 일반적인데(물론 strcmp, strlen 같은게 잇긴 하지만.) PHP는 그렇지가 않기도 하고 속도 문제도 있을 듯 싶고 해서 그런 방식의 해석을 하지 않으려 했습니다. explode를 써면 문자열에 2개 이상의 공백이 있을 경우 공백 문자를 기준으로 배열로 나누기를 시키면.. 아래와 같은 현상이 생깁니다.
<?
  $str = "안 녕  하세요.";
 
  $tmp = explode (" ", $str);
 
  print_r ($tmp);
?>
출력:
 Array
(
  [0] => 안
  [1] => 녕
  [2] =>
  [3] 하세요.
}

이런 식이 되어 버립니다. 즉 명령행 해석시에 2차의 필터링이 필요해 집니다. 정리 하면 각가의 장단점이 있습니다. 그런데 어떤 것을 쓰면 좋겠느냐 하는 거죠. 명령 해석기에서 함수에 넘길 모든 인자를 해석하여 이걸 함수의 인자 틀에 맞게 쭈욱 넣어 주느냐... 아니면 전체 인자를 변수 하나로 만들고 이 문자열을 넘겨 주느냐 하는 겁니다. 마치
#include < stdio.h >
 
int main (int argc, char **argv)
{
}

이거랑 비슷한 거죠.. 아 물론 이건 인자의 개수 등을 받고 그것에 따라 해석을 하지만요. 어덯게 하면 좋을까요?

전 글이 길어지면 두서가 없어지는거 같습니다. 죄송합니다 항상. 많은 조언 부탁 드리겠습니다.

모두 행복하세요.
이여송 사도요한 드림.
PS:정말 KLDP에 프로젝트 페이지 올리고 개발 해 볼까요. 이전에 그런 글도 쓴 거 같아서요. 한번 해 보면 좋겠다고. 저보다 능력 있으신 많은 분들, 능력과 상관없이 프로젝트에 관심 가져 주시는 분들이 계시다면 그 분들과 함께 일 할 수 잇다면 좋겠다는 생각에서 였지요 음.

송효진의 이미지

1. 명령처리기 라는 용어를 인지하는것이 힘듭니다.
- 웹에서 키보드로 명령을 내리기 위한 용도로 이해했습니다.

2. 1 이 맞게 이해한 것이라면,
- 위의 클래스는 명령을 등록하고, 등록된 명령을 수행하기 위한 것이겠군요.
위 대로라면 shell_exec 등을 이용하게 된다는 것인데, 인자를 확실하게 제한을 하거나,
외부로 넘기는 인자도 '등록'하여 사용하도록 해야 보안상 안전할 것 같네요.
예) 'date +%?' : ?는 영문 1글자만 허용.

3. print_r(preg_split('/[\s\t]+/', '안 녕 하세요'));

4. 배열 검색도 함수가 준비되어 있습니다.

5. php document 의 함수이름만 대충 훑어보셔도 매우 좋을 것 같네요.

emerge money

사랑천사의 이미지

명령 처리기.. 쉘을 생각 해 보시면 되겠습니다. SSH나 Telnet 접속 하면 뜨는 bash! 그리고 그냥 콘솔 접속 해도 뜨죠 아무튼.. 다들 아시는 그 'Shell'의 명령 해석기.. 처리기를 말 하는 겁니다.

그리고 Shell을 말 한 것은, 이놈이... Web에서만 돌아 갈 것이 아니고 Telnet에서도 돌아 갈 거기 때문입니다. 연동식입니다. Telnet에선 문자열을 읽는데 ReadLine PHP 모듈의 함수들을 사용 할 것이고 Web에서는 폼으로 넘겨 받은 것을 실행 하게 할 것입니다. 그리고 처리 범위는 내부 함수(Shell이 내부 명령을 먼저 검색 하듯이)와 외부 명령입니다. 하지만 외부 명령을 바로 실행 할 일은 거의 없어 보이고요. 대부분 내부 함수를 실행 하겠죠. 그리고 배열 검색 함수라... 일일히 카운트 해서 검색 하는 것 보다 그게 나을 거라는 말씀이신지... 뭐. 그렇겠죠... 근대 이런 경우가 있어서 이럴 때는 어던 방법이 효율적일까 생각 중입니다.

1. 쪽지 함수.
1) 최소 인자 수:1 (받는 사람 ID나 회원 번호)
2) 부가 인자 수: > 1 (보낼 문자열)
3) 부가 문자열이 없는 경우, 내용을 입력 받음.(콘솔 생각 하시면 쉬움)
>> 이럴 경우는 기본 인자는 길이가 어느정도 일정할 것이고 공백을 포함 할 수 없는 경우가 보통입니다. 2인자는 공백 문자가 포함되며 공백 문자가 겹쳐서 2개 이상 사용 될 수도 있습니다. 제가 안녕하세요 예를 든 것은 '녕'자와 '하세요.' 사이에 공백이 두 칸 있습니다. 이런 경우 이런 명령문 해석을 명령어 해석기가 하느냐.. 혹은 함수에서 전부 문자열을 받아 단위별 처리를 하는 것이 옳은가 하는 것입니다. 효율성 면에서 말이죠. 더군다나 제가 사용하는 언어가 PHP라는 것을 감안 해야 하겠는데, 사실 PHP와 C의 콘솔 제어나 문자열을 카운팅 방식으로 처리 하는 것에 대한 속도차등을 정확히 모르겠으니 문제가 심각합니다.

2. 마지막 인자가 공백을 포함할 수 없으며 그 전까지의 인자들이 공백을 포함 할 수 잇으며 공백 문자가 2개 이상 겹칠 경우.
>> 이런 경우가 드물 거라는 생각은 합니다. 하지만 명령을 만들다 보면 충분히 일어날 가능성이 있는 부분이라 생각 하고 있기 때문에 이런 경우의 대비책도 있어야 할 텐데 여기서의 효율성 또한 제가 생각한 방법과 이전의 처리기가 일일히 해석 하는 방식에서 어떤지 모르겠습니다. 상황은 10명 이상의 동시 접속 등이 이루어 질 경우라고 가정 해 봐야 할 겁니다. 왜? 커뮤니티나 이전 PC통신과 비슷한 환경이란 것을 감안 해 봐야 할 듯 하니까요.

처음 한 두 명 접속 해서 사용 할 경우 명령 해석 하는데 큰 무리가 없어 보입니다. 하지만, 여러명이 접속 하고 그 수가 점차 늘어날 경우 명령 해석기가 동시에 여러 군대서 활성화 될 것입니다. 이렇게 되면 PHP 특성상 사용자 함수로 문자 단위 혹은 배열 단위 파싱을 통한 명령 해석을 할 경우 전체 시스템 성능이나 접속자 명령에 대한 처리 속도 면에서 얼마나 효율적인가 하는 것이.. 중요한 건데... 여렵군요. 실험 해 볼 수 있는 조건도 솔직히 아닙니다. 제가 시스템 마스터로 움직이고 있습니다만, 그렇다고 현재 운용중인 시스템에 PHP로 바로 이런 대단위 실험을 해 볼 수 있는 실정은 아닙니다.

이전의 해석기는 explode와 implode등의 문자열/배열 처리 함수를 사용 했습니다. 상당히 조잡한 코드지만, 명령 해석기와 실행기의 소르를 넣어 보겠습니다.

  function 명령해석기 ($명령줄) {
    global $cmdlst;
    $tmp = explode (" ", $명령줄);
    if (($번호 = $cmdlst->검색 ($tmp[0])) == -1) return false;
 
    $결과물[] = $cmdlst->명령어[$번호];
    $결과물[] = $cmdlst->실행방식[$번호];
 
    if ($cmdlst->최소변수[$번호] > 0) {
      $c = 0;
      $c2 = 1;
      $tmp_count = count ($tmp);
      while ($c < $cmdlst->최소변수[$번호]) {
        while ($c2 < $tmp_count) {
          if (strlen ($tmp[$c2]) > 0) break;
          $c2++;
        }
        if ($c2 == $tmp_count &&
            count ($인자) < $cmdlst->최소변수[$번호]) {
          $c2 = false;
          break;
        }
        $인자[] = $tmp[$c2];
        $c2++;
        $c++;
      }
      if ($c2 != false) {
        if ($c2 < $tmp_count) {
          while ($c2 < $tmp_count) {
            $문자열인자[] = $tmp[$c2];
            $c2++;
          }
          $인자[] = implode (" ", $문자열인자);
        }
        echo ("명령어:$tmp[0], 기능:".$cmdlst->명령어[$번호]."\n");
        foreach ($인자 as $배열자료) {
          $결과물[] = $배열자료;
        }
        print_r ($인자);
      }
    }
    else $c2 = true;
    if ($c2 != true) return false;
    else return $결과물;
  }
 
/*  function 실행기 ($구조) {
    if ($구조[1] == EXEC_INLINE) {
      switch ($구죠[0]) {
 
      }
    }
    elseif ($구조[1] == EXEC_EXTERN) {
      $실행 = "$구조[0] ";
      $개수 = count ($구조);
      if ($구조 > 2) {
        $c = 2;
        while ($c < $개수) {
          $실행 .= "$구조[$c] ";
        }
      }
      passthru ($실행);
    }
    else echo ("ERROR\n");
  }
*/

명령 해석기와 실행기를 불리 시켰고 해석기에는 디버깅을 위해 echo문을 여러번 사용 했습니다. 코드는 보시다싶히 상당히 조잡합니다. 그리고 실행기는 일단 보류중이기 때문에 주석 처리 해 두었습니다. 그리고 ... 해석기에 버그도 어느정도 있습니다.(조잡하니 그렇지 으으.)

아직 새로운 명령어 해석기를 함수는 작성 한 것이 없고 단지 생각만 가지고 있습니다.

경험이나 조언 많이많이 부탁 드립니다.

그리고, 이 프로젝트에 대한 문서를 공개 하도록 하고 프로젝트 그룹을 만들어 작업 해 보는 것에 대해선 어떻게 생각 하시는지... 근대 프로젝트 시작한 제가 상당이 좀 우유부단하고 결단력이 떨어지고 해서 많은 분들이 저와 프로젝트를 하시면 불편하시지 않을까 하는 생각도 드네요 음.

그리고 좋은 말씀 감사합니다. 한번 더 둘러보죠 PHP 메뉴얼. 코드 만들면서 잘 안 쓰던 함수들 덕에 PHP 메뉴얼을 몇 시간 동안 둘어 봤습니다. 좀 연구를 했죠. 특히 Telnet-Terminal에서의 입력 및 터미널 자체적인 제어등을 위한 함수들을 찾으려고 했는데 쉽지 않더군요. ECHO등을 마음데로 조정 할 수 잇어야 하는데 어절 수 없이 stty 외부 명령을 쓸 수 밖에 없게 되었군요. 아! 이건 여담이었습니다. 메뉴얼 이야기가 나와서.
----
일어나라! 싸워라! 그리고 이겨라!
다만!!! 의미 있는 것에 그 힘을!!!
그 능력과 노력을!!!

사람천사

송효진의 이미지

-3. 안 녕 하세요 예제를 봐 주세요.

터미널에서 사용한다는 것은 inetd 같은 것을 통해 php 에 stdin/out 으로 통신한다는 것인가요?

emerge money

사랑천사의 이미지

네 그렇습니다. 3번은 정규표현식이군요. 펄식의 정규표현식. 물론 봤는데 Perl을 잘 모릅니다. 정규표현식도 그리 익숙한 편은 아닙니다. 해석은 할 줄 알지만 응용은 좀 어렵죠 아무튼 저게 가능하군요. 정규표현식 단위로 자르기. 아무튼 저러면 탭문자와 공백 문자가 여러번 겹티거나 나온다고 해도 처리가 충분히 가능하겠군요. 하지만 이런 경우능 또 어렵겠네요.. 이럴 때는 explode와 implode를 쓸 수 박에 없어 보이는 데요?

쪽지 사용자 안녕 하신가요? 오랜만입니다. 그렇죠? 답 좀 주세요.

저걸 빈칸 하나 틀리지 않고 전송 하려면 preg_split를 이용해 잘라서 배열에 넣거나 하면 ... 쓰기가 매우 곤란해 지겠네요. 위의 해석기의 핵심이 거기에 있거든요. 물론 조잡하지만. 그래서 수동으로 하느냐 마느냐 이게 나온 겁니다.

그리고 '네'라고 답 한 것에 대해 말씀 드리겠습니다. inetd기반의 telnetd를 통해 들어오는 접속을 받아 stdin, stdout등을 제어하는게 맞습니다 터미널 제어라는게 제가 말 하는 것이. 그리고 DB나 기본적인 함수등의 연동을 통해 Web쪽과 연동 하게 만드는 것이 목표입니다.
----
일어나라! 싸워라! 그리고 이겨라!
다만!!! 의미 있는 것에 그 힘을!!!
그 능력과 노력을!!!

사람천사

송효진의 이미지

- telnetd 를 통한다고요?
그럼 bash 쉘이 뜬 상태가 되는 건가요?
inetd 에 php 를 직접 연결해야 제어가 될 듯 한데요.

- 자르는 이유는 순전히 인자 처리를 위한 것인데,
인자가 아닌 문자열이면 안자르는게 맞겠지요.
bbs 분위기에서 약간만 탈피하여 명령어를 구분하는 문자 하나('/') 사용해서,
/memo ysnglee2000 안녕하세요? 잘 지내시나요? 통 연락이 없네요. 쪽지 한장 주세요.
이런식이 된다면,
<?php
if($line[0] == '/') {
if(false !== preg_match('@^/([^\s\t]+)[\s\t]+([^\s\t]+)[\s\t]+(.*)$@',
$line, $matches)) {
$command = $matches[1];
$targetid = $matches[2];
$message = $matches[3];
}
}
?>
요렇게 처리할 수 있겠지요.

emerge money

wkpark의 이미지

하려 하시는 작업이 php에 별로 어울리지 않는 작업은 아닌 것 같습니다.

간단한 구현이라면 php로도 물론 할만하겠지만요.

몇명의 사용자가 어떤 패턴의 작업을 하며, 어떤 스팩을 만족해야 하는지를 생각해봐야 할것같습니다.

온갖 참된 삶은 만남이다 --Martin Buber

사랑천사의 이미지

이전 XHOST 같은 방식으로 BASH대신 연결 될 것입니다.
보통 BBS접속 계정을 보면 이런 식입니다.
bbs::2222:2222::/home/bbs:/home/bbs/bin/main
위 줄은 아시겠지만 passwd의 한 부분을 예를 든 겁니다. 보통 저런 식이란 거죠. 그래서 Telnet에서 로그인시 bbs계정으로 로그인 되면 계별 main프로세스가 뜹니다. bash대신에 말이죠.

이전엔 BBS들이 대부분 C로 작성이 되었었는데... 뭐 다들 아시죠??? 으음.. 그래서 termios 같은걸 쓰면 터미널 제어가 쉽습니다. 근대 PHP는 stty를 써야 겠고 우선..

명령행은 readline로 읽고 그 후에.. bash로 치면 이런 식입니다. 매모를 예로 들어 보겠습니다.
grep -n "Hello. World!" test.c
이렇게 된 경우 grep에 넘겨 지는 인자는 총 4 개 입니다. grep, -n, 문자열, test.c
이럴 경우는
쪽지 받는이 내용
이것과 비슷한 경우죠. 다만 BBS같은 곳에선 대부분 내용 부분에 큰따음표로 묶거나 하지 않기 때문에 마지막 인자가 가변길이 인자가 될 수 있고 공백 문자로 구분 하기 힘들도록 여러개의 공백 문자가 들어갈 수 있다는 겁니다. 제가 쓴 글에서 예를 들 때는 중간 중간에 공백 문자가 여러 개 들어 간 부분이 있는데 이게 HTML로 처리 되는듯 하네요. 다 한칸으로 보이시는듯 이런... 공백을 /표시로 바꿔 보면...
쪽지 받는이 안녕하세요?/오랜만이죠?///요즘/어떻게//지네세요?/연락이///없으시군요./쪽지/하나//주세요.

만약 이렇게 했다면 위에 위에 써 주심 코드 같은 정규표현식 응용으론 ...(물론 실제 응용은 제 몫이지요.) 좀 곤란해 진다는 거겠죠. 인자를 구하기 위해서 자르는데 문자열이라면 물론 자를 필요는 없습니다. 하지만 어디 까지는 자르고 어디 까지는 안 자른다 이렇게 하기 곤란해 지기 때문에 해석기는 명령어만 찾아 네가 그 이후의 모든 명령행 자료를 그냥 찾아넨 함수에 문자열로 전달 하느냐 아니면 기존 방식을 사용 하느냐에 대한 생각이 나온 거였고요 음.

우선은 문자열을 적당히 잘라가며 처리 할 수 있는 명령문 해석기를 만들어서 코드를 올려 보겠습니다. 물론, 인자 처리는 함수 Built-in으로 해 보겠습니다. 음... 근대 문자단위 문자열 처리가 PHP에선 왠지 그래도 부자연스러워서요... 그리고 상황이 이렇습니다.
사용자 동시 접속 10명 상태에서 그 사람들이 동시에
쪽지 받는사람 내용
이런걸 치고 있다거나 여기 저기서 채팅을 하고 있으며 뭐 그런 거죠 음음... ㅎㅎㅎ

이전 PC통신이랑 같은 겁니다 아무튼... 그 대신 이놈이 웹하고 연동 된다는게 다르고 DB서버를 체계적으로 사용하기 위해서 엔진까지 개발 할 거란 것도 다르죠. 특별한 엔진을 만들어서 적용 할 생각입니다. 머리 아프네요 윽

그럼 이만... 아무튼 감사합니다 많은 분들 의견 주셔서.. (사실 거의 한 분이 고생 해 주셨네요.)
----
일어나라! 싸워라! 그리고 이겨라!
다만!!! 의미 있는 것에 그 힘을!!!
그 능력과 노력을!!!

사람천사

wkpark의 이미지

목적하시는 것이, (중대규모라고 하셨으니) 100~200사람 접속했을때 각 접속에 대한 main프로세스가 뜨게 된다는 것인데, 목적하시는 것에 비해 소모되는 시스템 자원이 불필요하게 많은게 아닌가 합니다. php가 지속적인 접속에 대해 안정성을 보장할만한 언어도 아니라고 생각되고요.

터미널 창처럼 보이게 하고, ajax를 통해 채팅을 구현하듯 구현하는 것이 가장 값싼 구현이 아닐까 합니다.

온갖 참된 삶은 만남이다 --Martin Buber

사랑천사의 이미지

흐흠. 그렇다면 소켓 데몬을 만들고 클라이언트를 만들고 이래야 하는데 목적한 것은 결국은 Telnet(파일 전송.. ZMODEOM 프로토콜 지원!)/Web기 때문에 그건 어려울 것 같고요... 하기야 Telnet로 100명 이상 동시 접속을 한다면 문제가 생길 수 있겠죠. inetd기반의 시스템이라면 자원을 멍청 먹을 거고 역시나 반응 속도는 꽝일 테니까요. 하지만 중/대형이라고 해도 동시 접속자가 100명이 넘는다라 글쎄요. 웹 쪽은 그럴 거 같지만 Telnet쪽은 안 그럴 거 같은데요. Telnet에서의 문제는 없을 거 같습니다 그래서. 그리고 웹이야 어차피 웹서버 의존이니 이걸 NFS로 묶어 두고 웹서버는 따로 두는 방법도 있습니다. 대형이라면 보통 서버들을 여러 부분으로 불리 하곤 하죠 아마도... 그런 구조읜 전산망을 수없이 봐 왔고요. 중형이나 소형이라면 한 시스템 내에서 처리 하는 경우도 많던데 그정도라면 큰 문제는 없어 보입니다. 뭐 하지만 일단 참고 하겠습니다. 프로그래밍 자체는 별로 경험이 없어서 크게 생각을 못 했군요...

그럼 일단 명령 해석기와 예제 함수를 하나 만들어서 올려 보겠습니다. 관심들 가져 주셔서 감사합니다. 그리고 어느정도 틀이 잡히면 여러번 말씀 드린 것고 같이 라이센스를 GPL로 하고.. 공개 할 것 같습니다 소스. 공개 프로젝트가 될 듯...

최초로 이 프로그램이 사용 되는 곳은 .. 제가 속한 단체가 될 겁니다. 아마도 음.
----
일어나라! 싸워라! 그리고 이겨라!
다만!!! 의미 있는 것에 그 힘을!!!
그 능력과 노력을!!!

사람천사

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.